java - 在 Windows 上的 Java 中检查文件是否为空的最有效方法

标签 java file logging file-io filesystems

我正在尝试检查日志文件是否为空(意味着没有错误),在 Java 中,在 Windows 上。到目前为止,我已经尝试过使用 2 种方法。

方法一(失败)

FileInputStream fis = new FileInputStream(new File(sLogFilename));  
int iByteCount = fis.read();  
if (iByteCount == -1)  
    System.out.println("NO ERRORS!");
else
    System.out.println("SOME ERRORS!");

方法二(失败)

File logFile = new File(sLogFilename);
if(logFile.length() == 0)
    System.out.println("NO ERRORS!");
else
    System.out.println("SOME ERRORS!");

现在,当日志文件为空(没有内容)但文件大小不为零(2 个字节)时,这两种方法都会失败。

检查文件是否为空的最有效准确的方法是什么?我要求效率,因为我必须循环检查文件大小数千次。

注意:文件大小会徘徊在几到 10 KB 左右!

方法 3(失败)

按照@Cygnusx1 的建议,我也尝试过使用 FileReader,但没有成功。这是片段,如果有人感兴趣的话。

Reader reader = new FileReader(sLogFilename);
int readSize = reader.read();
if (readSize == -1)
    System.out.println("NO ERRORS!");
else
    System.out.println("SOME ERRORS!");

最佳答案

检查文件第一行是否为空:

BufferedReader br = new BufferedReader(new FileReader("path_to_some_file"));     
if (br.readLine() == null) {
    System.out.println("No errors, and file empty");
}

关于java - 在 Windows 上的 Java 中检查文件是否为空的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7190618/

相关文章:

java - 如何将解析后的 XML 显示到 ListView

c++ - 哪个文件操作更快,读还是写

php - 如何获取使用 php/JavaScript 上传的文档第一页的屏幕截图

java - 如何配置 logback 以跳过来自 org.package.* 的所有级别低于 WARN 的日志消息?

c# - 从控制台\Web 应用程序记录到 Azure 诊断

java - GWT 历史 JavaScript 在 Internet Explorer 中无法运行

java - 我应该在使用 throw 的同时使用 throws 吗?

Java对象实例化

macos - 如何完全删除新的 Microsoft Visual Studio for Mac?

logging - 依赖注入(inject)和日志接口(interface)