2014-10-22 4 views
1

기존 텍스트 파일에 추가 할 때 문제가 발생했습니다.Java PrintWriter가 닫힌 후 기존 .txt 파일에 추가되지 않습니다.

줄 텍스트를 추가하지 않는 것 같습니다. 지금까지 나는이 방법이있어 :

public static void addLine(File f, String line) { 
    try { 
     FileWriter fw = new FileWriter(f.getName(), true); 
     BufferedWriter buffer = new BufferedWriter(fw); 
     PrintWriter pw = new PrintWriter(buffer); 
     pw.println(line); 
     pw.close(); 

    } catch (IOException e) { 
     System.err.println("IOException: " + e.getMessage()); 

    } 
} 

을 내 주에 나는 다음있어 : 나는이 프로그램을 실행하면

public static void main(String[] args) { 
    File f = new File("adresOfFile"); 
    if (f.exists() && !f.isDirectory()) { 
     System.out.println("File " + f.getName() + " exists!"); 
     System.out.println("\n" + "Path: " + f.getAbsolutePath()); 
     System.out.println("\n" + "Parent: " + f.getParent()); 
     System.out.println("\n" + "--------------CONTENT OF FILE-------------"); 
     addLine(f, ""); 
     addLine(f, "The line to append"); 
     try { 
      displayContent(f); 
     } catch (IOException e) { 
      System.out.println(e.getMessage()); 
     } 
    } else { 
     System.out.println("File not found"); 
    } 
} 

이 오류를 제공하지 않는 것 같습니다. 프로그램을 실행하면 (addLine)을 추가 한 후에 수행되는 기존 텍스트 (displayContent)가 인쇄됩니다. 하지만 실행하면 추가 된 줄이없는 기존 텍스트 만 표시됩니다.

텍스트 파일에도 표시되지 않습니다. 나는 System.out.println()을 넣으려고했다. 메서드에서, 그리고 그것을 인쇄, 그래서 제대로 실행하는 방법을 알고 그냥 추가하지.

편집 AWNSER는 : F와 f.getName()를 교체하고, pw.close 전에 pw.flush 추가()

답변

0

나는 당신의 displayContent (파일) 함수는 버그가 있다고 생각합니다.

위의 코드가 파일에 추가됩니다. 첨부 파일이 있는지 확인하려면 파일을보십시오.

또한 줄을 추가 할 때마다 PrintWriter 개체를 만들어야합니까? 추가 할 연속 선이 많은 경우 정적/최종 개체를 만들어 단일 PrintWriter/BufferedWriter 개체를 사용해보십시오.

+0

파일을 볼 때 아무 것도 변경되지 않았으므로 아무 줄도 추가되지 않았습니다. 연속 라인이 없으므로 빈 라인과 테스트 라인을 추가하면됩니다. – asdfgh

+0

출력은 얼마나됩니까? 파일의 이름/경로를 쓰고 있습니까? 코드가 저에게 효과적입니다. 다음은 [link]입니다 (https://gist.github.com/vedharish/abefb0705e91e4ac28ac) 이 코드는 moja.java 파일과 동일한 위치에 파일 'a'를 추가합니다. –

+0

그리고 FileWriter (String, boolean) 대신 [FileWriter (File file, boolean append)] (http://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html) 생성자를 사용하십시오. 그리고 pw.close() 전에 pw.flush()를 수행하십시오. –

관련 문제