2012-03-21 17 views
2

テキストファイルにテキストを追加することはできません。以前のテキストのみを上書きします。私のコード:PrintStreamを使用してテキストファイルに追加

//using JFileChooser to select where to save file 
PrintStream outputStream = MyFrame.ShowSaveDialog(); 
    if(outputStream!=null){ 
     outputStream.append(input); 
     outputStream.close(); 
    } 

編集: ShowSaveDialogはのPrintStreamを返します。そのメソッドのコードは次のとおりです。

public static PrintStream ShowSaveDialog(){ 
    JFileChooser chooser = new JFileChooser(); 
    FileNameExtensionFilter filter = new FileNameExtensionFilter(
      "Tekst filer", "txt"); 
    chooser.setFileFilter(filter); 

    int returnVal = chooser.showSaveDialog(null); 
    try{ 
     if(returnVal == JFileChooser.APPROVE_OPTION){ 

      return new PrintStream(chooser.getSelectedFile());    
     } 
     else{ 
      return null; 
     } 
    } 
    catch(FileNotFoundException e){ 
     JOptionPane.showMessageDialog(null, "Ugyldig Fil!", 
        "error", JOptionPane.ERROR_MESSAGE); 
    } 
    return null; 

} 
+1

PrintStreamの作成方法を確認してください – Jayan

答えて

8

MyFrame.ShowSaveDialog();は何を返しますか?キーは、適切なコンストラクタ(2番目のパラメータはブール値true)でFileOutputStreamを作成し、追加するFileOutputStreamにし、このFileOutputStreamオブジェクトを使用してPrintStreamを構築することです。 showSaveDialogは、()(そのメソッドを注意し、変数名は小文字で始めなければならない)ファイルまたはFileオブジェクトの名前を返した場合、あなたはそのような何かを行うことができます。例えば

、:

try { 
    File file = myFrame.showSaveDialog(); // if this method returns a File!!!!! 
    FileOutputStream fos = new FileOutputStream(file, true); 
    PrintStream printStream = new PrintStream(fos); 
    //.... etc 
} catch(....) { 
    // .... 
} 

編集:
そうような何かを、上記のあなたの投稿のコードにこれを適用するには:

public static PrintStream showSaveDialog() { 
     JFileChooser chooser = new JFileChooser(); 
     FileNameExtensionFilter filter = new FileNameExtensionFilter(
      "Tekst filer", "txt"); 
     chooser.setFileFilter(filter); 

     int returnVal = chooser.showSaveDialog(null); 
     try { 
     if (returnVal == JFileChooser.APPROVE_OPTION) { 

      // ******* note changes below ***** 
      File file = chooser.getSelectedFile(); 

      FileOutputStream fos = new FileOutputStream(file, true); 
      return new PrintStream(fos); 
     } else { 
      return null; 
     } 
     } catch (FileNotFoundException e) { 
     JOptionPane.showMessageDialog(null, "Ugyldig Fil!", "error", 
       JOptionPane.ERROR_MESSAGE); 
     } 
     return null; 

    } 

核心はここにこれらの行のようになります。

  File file = chooser.getSelectedFile(); 
      FileOutputStream fos = new FileOutputStream(file, true); 
      return new PrintStream(fos); 

FileOutputStreamコンストラクタの真は、既存のファイルに追加するFileOutputStreamを作成します。これに関する詳細については、FileOutputStream APIをチェックしてください。

+1

ありがとうございました!私は今働いているし、あなたがしたことを理解している! – Twistar

+0

@Twistar:歓迎して、これが助けてくれてうれしい! –

関連する問題