2016-10-02 4 views
1

내 프로그램이하는 일을 기록하려고합니다. 현재 PrintWriter를 사용하고 있지만 출력되는 것은 모두 빈 txt 파일입니다. 가능한 경우 누군가 제 코드를 수정하거나 제안 해주십시오.파일 java에 인쇄하지 않습니다.

public class Log { 
public static void log(String string){ 
    if(string != null) { 
     System.out.println("log ".concat(string)); 
     try { 
      PrintWriter out=new PrintWriter(new FileWriter("log.txt")); 
      out.println("log ".concat(string)); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

public static void log(String[] strings) { 
    if (strings == null) return; 
    for(String string : strings) { 
     if (string != null) { 
      System.out.println("log ".concat(string)); 
      try { 
       PrintWriter out=new PrintWriter(new FileWriter("log.txt")); 
       out.println("log ".concat(string)); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

답변

0

당신은 데이터가 파일에 기록 얻을 수있는 PrintWriter를 세척해야

PrintWriter out = new PrintWriter(new FileWriter("log.txt")); 
out.println("log ".concat(string)); 
out.flush(); 

당신은 당신은 또한

을 기록 할 수있는 데이터의 원인이됩니다되는 PrintWriter를 닫아야 파일로 작성하여 수행하는 경우
out.close(); 
0

파일을 닫아야합니다. 이처럼 : 여담으로

PrintWriter out=new PrintWriter(new FileWriter("log.txt")); 
out.println("log ".concat(string)); 
out.close(); 

, 당신은 당신의 두 번째 방법이 훨씬 청소기 만들 수 있습니다

public static void log(String[] strings) { 
    if (strings == null) return; 
    for(String string : strings) { 
     log(string); 
    } 
} 

같은 코드를 붙여 복사하는 모든 시간을, 당신은 캡슐을 사용하는 방법을 찾고해야/메소드 호출은 중복 된 코드를 제거합니다. 필요한 경우 나중에 변경할 수 있습니다.

관련 문제