2016-10-02 17 views
1

Я пытаюсь зарегистрировать, что делает моя программа. В настоящее время я использую PrintWriter, но все, что он производит, представляет собой пустой текстовый файл. Может кто-то, пожалуйста, поправьте мой код, если это возможно, или дайте какие-либо предложения.Не печатать в файл 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); 
    } 
} 

В любое время вы скопировать вставив тот же код, вы должны искать способ использовать инкапсуляцию/метод для удаления дублированного кода. Это облегчит изменение вещей позже, если вам нужно.