2011-07-15 125 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