2011-07-15 8 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実際の印刷を行うクラス。

EDIT:あなたは、ユーザーがディレクトリのみを選択したい場合は

、それを表示する前に

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(); 

がわからない場合は、How to Use File Choosers上のSwingのチュートリアルからのセクションを読んでチュー。