2013-07-12 3 views
0

У меня есть приложение Java, которое должно записывать много данных в отдельные строки в текстовом файле. Я написал код ниже, чтобы сделать это, но по какой-то причине он ничего не пишет в текстовый файл. Он создает текстовый файл, но текстовый файл остается пустым после выполнения программы. Может ли кто-нибудь показать мне, как исправить код ниже, чтобы он действительно заполнял выходной файл с таким количеством строк вывода, сколько ему требуется?using PrintWriter для записи строк в файл журнала

public class MyMainClass{  
    PrintWriter output; 

    MyMainClass(){  
     try {output = new PrintWriter("somefile.txt");}  
     catch (FileNotFoundException e1) {e1.printStackTrace();}  
     anotherMethod(); 
    }  

    void anotherMethod(){ 
     output.println("print some variables"); 
     MyOtherClass other = new MyOtherClass(); 
     other.someMethod(this); 
    } 
} 

public class MyOtherClass(){ 
    void someMethod(MyMainClass mmc){ 
     mmc.output.println("print some other variables") 
    } 
} 

ответ

1

Как вы Мне кажется, что это очень странно. Почему бы вам не написать один метод, который принимает строку, а затем записывает ее в ваш файл? Что-то вроде этого должно работать нормально

public static void writeToLog(String inString) 
{ 
    File f = new File("yourFile.txt"); 
    boolean existsFlag = f.exists(); 

    if(!existsFlag) 
    { 
     try { 
      f.createNewFile(); 
     } catch (IOException e) { 
      System.out.println("could not create new log file"); 
      e.printStackTrace(); 
     } 

    } 

    FileWriter fstream; 
    try { 
     fstream = new FileWriter(f, true); 
     BufferedWriter out = new BufferedWriter(fstream); 
     out.write(inString+"\n"); 
     out.newLine(); 
     out.close(); 
    } catch (IOException e) { 
     System.out.println("could not write to the file"); 
     e.printStackTrace(); 
    } 


    return; 
} 
+0

+1 и кредит на ответ. Спасибо за такое хорошее решение. – CodeMed

+0

@CodeMed не проблема, рад, что это сработало для вас. – user2464620

1

Используйте другой конструктор:

output = new PrintWriter(new FileWriter("somefile.txt"), true); 

По JavaDoc:

public PrintWriter(Writer out, boolean autoFlush)

Создает новый PrintWriter.

Параметры:

из - Персонаж-выходной поток
AutoFlush - Логическое; если это правда, то Println, Printf или методы форматирования будет вымывать выходной буфер

1

Используйте другой конструктор new PrintWriter(new PrintWriter("fileName"), true) для автоматической промывки данных или Используйте flush() и close(), когда вы закончите писать