2014-07-27 4 views
0

Я разрабатываю программу java, которая принимает имя ученика и отображает имя и дату на JTextPane. Когда пользователь нажимает кнопку выхода, программа должна автоматически сохранять файл в указанном каталоге внутри новой папки, созданной с тем же именем, что и пользователь, предоставленный для ученика. Ниже мой код:Java File Directory Issue

public class StudentRecorder extends JFrame implements ActionListener{ 

MyKeyListener listener; 
public JTextPane page; 
private JScrollPane scroll; 
private JMenuBar menubar; 
private AttributeSet aset; 
public String name; 

private JMenu menufile; 
private JMenuItem exit; 

StudentRecorder(){ 
    super("Student Recorder"); 
    init(); 

    this.setSize(400, 400); 
    this.setLocation(400, 400); 
    this.setVisible(true); 
} 

void init(){ 
    menubar = new JMenuBar(); 
    name = JOptionPane.showInputDialog(this, "Enter Student's Name:\n(For locations of files to be preserved, " 
      + "names\nare case-sensitive.)", "Student Name", JOptionPane.QUESTION_MESSAGE); 
    String timeStamp = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(Calendar.getInstance().getTime());   
    page = new JTextPane(); 

    if (name.equals("")){ 
     aset = StyleContext.getDefaultStyleContext().addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, Color.RED); 
     page.setCharacterAttributes(aset, false); 
     page.setText(timeStamp + "\n" + "(Student Name Not Typed In. You must manually save this file. File " 
       + "wont be autosaved.)" + "\n\n"); 
    } 
    else{ 
     page.setText(timeStamp + "\n" + name + "\n\n"); 
    } 

    //Declaration 
    menufile = new JMenu("File"); 
    exit = new JMenuItem("Exit"); 

    //Adding to JMenuBar 
    menubar.add(menufile); 
    menufile.add(exit); 

    //Add ActionListener 
    exit.addActionListener(this); 

    //Page characteristics 
    aset = StyleContext.getDefaultStyleContext().addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, Color.BLACK); 
    page.setCharacterAttributes(aset, false); 
    Font font = new Font("Arial", Font.PLAIN, 14);   
    page.setFont(font); 
    this.setJMenuBar(menubar); 
    scroll = new JScrollPane(page); 
    this.add(scroll); 
    scroll.createHorizontalScrollBar();  
    listener = new MyKeyListener(); 
    page.addKeyListener(listener); 
    page.setFocusable(true); 
} 

@Override 
public void actionPerformed(ActionEvent e) { 

    if(e.getSource() == exit){ 
     File f = new File("./Desktop/" + name); 
     try{ 
      if(f.mkdir()){ 
       System.out.println("Directory Created."); 
       System.exit(0); 
      } 
      else{ 
       System.out.println("Directory Not Created."); 
      } 
     }catch(Exception e1){ 
      e1.printStackTrace(); 
     } 

    } 

} 

} 

Я бегу на вопрос в моей программе, где файл не сохраняется в каталог с именем, предоставляемым. Он постоянно появляется в консоли «Directory Not Created». Может кто-нибудь, пожалуйста, скажите мне, как я могу решить эту проблему? В моем коде нет других ошибок, которые предотвращают его запуск.

Заранее благодарим всех, кто отвечает.

+0

Что директория эта программа запускается с? – Zach

+0

Он вложен в папку моих документов. Я надеялся сохранить мой каталог в моей папке проекта Java, но он предоставил мне инструкцию save-Directory Not Created. – iProgramIt

ответ

0

Причина, по которой возникает эта проблема, заключается в том, что вы пытаетесь создать каталог внутри ./Desktop, и вы используете это изнутри Documents, у которого нет папки рабочего стола. Чтобы сохранить его на рабочем столе, вы должны использовать абсолютный путь. Абсолютные пути начинаются с / на UNIX (Mac и Linux) и с C: на Windows:

File f = new File("/Users/yourname/Desktop/" + name);