Java 版画作者问题

Java 版画作者问题,java,outputstream,Java,Outputstream,我正在写一个程序,设计为平安在线数据库,并把状态日志写到一个.txt 每当我运行程序并打开.txt时,时间戳告诉我它刚刚被更改,但它是空的 public static void printToFile(String text) { String fileName = "log.txt"; PrintWriter outputStream = null; try { outputStream = new PrintWriter(fileName);

我正在写一个程序,设计为平安在线数据库,并把状态日志写到一个.txt

每当我运行程序并打开.txt时,时间戳告诉我它刚刚被更改,但它是空的

public static void printToFile(String text) {
    String fileName = "log.txt";
    PrintWriter outputStream = null;

    try {
        outputStream = new PrintWriter(fileName);
        System.out.println("Printing to txt");
        outputStream.println("Debug");
    } catch (FileNotFoundException e) {
        System.out.println("Error opening the file " + fileName);
        outputStream.close();
    }
}

public static void pingDatabase(Connection conn) throws SQLException, InterruptedException {
    Date timeStamp = new Date(System.currentTimeMillis());
    do {
        if (conn.isValid(10000)) {
            System.out.println("Printtofile called");
            printToFile("Database is Online");
        } else {
            printToFile("Database is Offline");
        }
        Thread.sleep(10000);
    } while (true);

}

由于是日志,您可能需要追加内容,而不是每次写入,并且在写入后需要将内容刷新到日志文件中

public static void printToFile(String text)  {
        String fileName = "log.txt";
        PrintWriter outputStream=null;
        try {
             outputStream =new PrintWriter(new FileWriter(fileName,true));
            System.out.println("Printing to txt");
            outputStream.append(text+"\n");
            outputStream.flush();//flushing to file
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("Error opening the file " + fileName);

        }
        finally{
              outputStream.close();
        }
        }

新FileWriter(fileName,true)FileWriter是OutPutStreamWriter的子类,用于在追加模式下打开
true
,除非出现异常,否则不会关闭或刷新
PrintWriter


考虑到当前代码,您还需要以追加模式打开输出文件,但保持其打开更有意义。每个消息打开和关闭一个文件的开销是巨大的。

请解释为什么在
catch
块中关闭流是必要的,而不是在任何其他时间,以及为什么
IOException
只能是由于打开文件时出现问题而不是其他原因。@EJP只完成了一个部分,所以我将对此进行研究,如果你想知道是谁否决了你的答案,你也会被留下来评论。你的编辑假设没有引发任何异常。我知道,当你像一个mnt一样回答时,没有评论就投了反对票,这真是一场噩梦before@EJP仅FileNotFoundException不够,因为PrintWriter需要IOException才能catch@Roushan和什么一样的答案?我在这里看到的唯一相同的答案是依赖于我提供的信息。美国提供了哪些信息?我不明白such@Roushan这就是我在回答中所说的,在我对你的回答的评论中,这似乎也是姚所主张的所有权,而你没有。如果你还有其他的观点,请提出来。现在这只是噪音,好的,是哪一个?您不需要关闭或刷新
PrintWriter
?他不需要在附加模式下打开他的文件?让它开着不会更有意义吗?打开和关闭每条消息的开销不是很大吗?请