2011-07-15 38 views
0

我正在尝试将新创建的文本文件保存到用户指定的目录中。但是,我不明白这个代码设置是如何实现的。在哪里指定要保存文件的位置?保存到特定目录

if(arg.equals(Editor.fileLabels[1])){ 
    if(Editor.VERBOSE) 
     System.err.println(Editor.fileLabels[1] + 
       " has been selected"); 
    filedialog = new FileDialog(editor, "Save File Dialog", FileDialog.SAVE); 
    filedialog.setVisible(true); 
    if(Editor.VERBOSE){ 
     System.err.println("Exited filedialog.setVisible(true);"); 
     System.err.println("Save file = " + filedialog.getFile()); 
     System.err.println("Save directory = " + filedialog.getDirectory()); 
    } 
    File file = new File("" + filedialog.getName()); 
    SimpleFileWriter writer =  SimpleFileWriter.openFileForWriting(filedialog.getFile() + ".txt"); 
    if (writer == null){ 
     System.out.println("Failed."); 
    } 
    writer.print("" + this.editor.getTextArea().getText()); 
    writer.close(); 
} 

回答

2

FileChooserFileWriter使事情变得相当容易,这里是Java教程:

http://download.oracle.com/javase/tutorial/uiswing/components/filechooser.html http://www.abbeyworkshop.com/howto/java/writeText/index.html

你这样称呼它:

JFileChooser fc = new JFileChooser(); 

int returnVal = fc.showOpenDialog(aComponent); 

if (returnVal == JFileChooser.APPROVE_OPTION) 
{ 
    File toSave = fc.getSelectedFile(); 

    FileWriter outWriter = new FileWriter(toSave); 
    PrintWriter outPrinter = new PrintWriter(outWriter); 

    outPrinter.println("" + this.editor.getTextArea().getText()); 
} 
else 
{ 
    //user pressed cancel 
} 

请记住,这是PrintWriter进行实际打印的类。

编辑:

如果希望用户只选择目录,显示它之前调用

fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 

。请注意,在这种情况下,您将不得不在该目录中指定一个新的File对象,以便能够向其写入文本(尝试将文本写入目录将导致IOException)。

+0

如果OP不清楚。使用选定的文件本身作为参数,将考虑文件名**和**目录。 –

+0

+1,用于指向文件选择器教程的链接。 -1,因为不使用textArea.write(...)方法(即不要重新发明轮子)。 – camickr

+0

也许在这种简单的情况下重塑,但除了文本区域之外的任何东西,他都需要通用的解决方案...... – donnyton

0

writer.print(“”+ this.editor.getTextArea()。getText());

不要使用那样的方法。所有文本组件都支持write(...)方法。您只需获取要将文件写入的文件名即可。

喜欢的东西:

JtextArea textArea = new JTextArea(....); 
.... 
FileWriter writer = new FileWriter("TextAreaLoad.txt"); // get the file name from the JFileChooser. 
BufferedWriter bw = new BufferedWriter(writer); 
textArea.write(bw); 
bw.close(); 

如果你不知道如何使用文件挑肥拣瘦然后读取从Swing教程中的部分上How to Use File Choosers