0

我正在网络驱动器上创建一个文件,然后向其中添加数据。不时写入该文件会失败。有没有一种好方法可以在每次我将数据保存到文件之前检查文件是否可访问,或者是否有一种方法可以检查数据是否已保存?

编辑:现在我在我的代码中使用带有 PrintStream 的 try-catch 块:

        try
        {
            logfile = new File(new File(isic_log), "log_" + production);
            //nasty workaround - we'll have a file the moment we assign an output stream to it
            if (!logfile.exists())
            {
                    prodrow = production;
            }

            out = new FileOutputStream(logfile.getPath(), logfile.exists());
            p = new PrintStream(out);
            if (prodrow != "")
            {
                p.println (prodrow);
            }
            p.println (chip_code + ":" + isic_number);
            p.close();
        }
        catch (Exception e)
        {
                logger.info("Got exception while writing to isic production log: " + e.getMessage());
        }

那么可能是 PrintStream 的问题吗?(PrintWriter 和 PrintStream 从不抛出 IOExceptions

4

2 回答 2

2

我会使用普通的 BufferedWriter 并根据需要自己添加换行符。


如果出现错误,正常的 FileOutputStream 操作应该抛出 IOException。

AFAIK,唯一的例外是不抛出异常的 PrintWriter。相反,您需要调用 checkError() 但它不会告诉您错误是什么或何时发生。

我建议你不要在这种情况下使用 PrintWriter。

于 2011-05-04T08:50:30.223 回答
1

解决这个问题的唯一合理方法是尝试写入文件,并以适当的方式处理任何产生的异常。由于网络的不可靠特性,几乎不可能事先知道 I/O 操作是否会成功。

于 2011-05-04T08:49:40.377 回答