2012-03-21 2 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();은 무엇을 반환합니까? 열쇠는 적절한 생성자 (두 번째 매개 변수는 부울 true이어야 함)를 사용하여 FileOutputStream을 작성하여 추가 FileOutputStream으로 만든 다음이 FileOutputStream 객체를 사용하여 PrintStream을 구성하는 것입니다.

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

을 : 예를 들어

는 showSaveDialog()는 (그 방법을 기록하고 변수 이름은 소문자로 시작한다)하는 경우는과 같이 뭔가를 할 수있는, 파일이나 파일 객체의 이름을 반환 편집 :
그래서 같은 것을, 위의 게시 된 코드에 이것을 적용 할하려면 :

:

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 생성자에서 true는 기존 파일에 추가하는 FileOutputStream을 만듭니다. 자세한 내용은 FileOutputStream API를 확인하십시오.

+1

대단히 감사합니다! 나는 지금 일하고있어, 네가 한 짓을 이해 했어! – Twistar

+0

@Twistar : 천만에 환영합니다. –

관련 문제