Проблемы с записью в текстовый файл

#java

#java

Вопрос:

Я пытаюсь записать отчет в текстовый файл. Когда я использую print метод, все выглядит нормально, но в файле ничего не записано. Вот мой код.

 public void writeFile(String filename,String report){
    try{
        FileWriter fw=null;
        try{
            fw = new FileWriter(filename);
            fw.write("The game report n");
            fw.write(report);
            fw.write("Hope everyone has enjoyed it");
            fw.flush();
        }
        catch(FileNotFoundException e){
            System.out.println(filename  "not found");
            System.exit(0);
        }
        finally{
            try{
                fw.close();
            }
            catch( Exception exp){
                System.out.println("Problem closing the filewriter");
            }
        }
    }
    catch(IOException e) {
        e.printStackTrace();
        System.exit(1);
    }   
}
 

А вот код из метода main.

 public class MainDarts {
    public static void main(String[] args) {
        GameManager manager = new GameManager();
        manager.readFile("Data.csv");
        manager.Execute();
        String report = manager.getOverallReport();
        manager.writeFile("OutputData.txt", report);

    }
}
 

Комментарии:

1. вы пробовали отладку?

2. Если ваш код не работает, это должно быть что-то связанное с GameManager. Другой код работает так, как вы ожидали.

3. Я пробовал отладку, но я мало что понимаю. буфер записи все время имеет нулевое значение

4. ~ Вау, я никогда не думал, что FileWriter(String fileName) документация настолько пуста. В нем не указано, что происходит, когда файл уже существует / не существует.

Ответ №1:

используйте класс PrintWriter следующим образом

 PrintWriter writer = new PrintWriter("filename.txt", "UTF-8");
writer.println("Hello");
writer.flush();
writer.close();
 

Комментарии:

1. я отредактировал ответ, вы найдете выходной файл в главном каталоге вашего проекта, если вы используете IDE, такую как Netbeans или Eclipse

2. так что проверьте это хххххххххх: p

3. Не забудьте закрыть () в блоке finally или использовать try-with-resources

Ответ №2:

Или вы можете рассмотреть что-то более простое, например

 try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(filename))) {
  writer.write(report);
}
 

или

 Files.write(Paths.get(filename), report.getBytes());