当前位置: 首页 > 面试题库 >

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

吴展
2023-03-14
问题内容

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

方法1(失败)

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!");

方法2(失败)

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");
}


 类似资料:
  • 问题内容: 我有一个游标,带有来自选择的值,我想根据我是否发现任何行来做点什么。 这似乎不起作用,有帮助吗? 问题答案: 您需要在使用%FOUND属性之前对游标执行FETCH。将您的代码更改为类似 请注意,您可能需要将变量添加到FETCH语句的INTO子句中,在TABLE1和TABLE2中的每一列都需要添加一个变量。还要注意,编写此游标的方式可能会获得比预期更多的返回行。因为没有指定连接条件,所以

  • 我有两种方法来检查列表是否为空 而且 我的拱门告诉我前者比后者好。但我认为后者更好。 谁能澄清一下吗?

  • 问题内容: 我听说过使用以下方法的建议: 从下面的评论中复制:“我正在寻找这样的语句:在MySQL和PostgreSQL中,对于短查询,count()更快,对于长查询,exist(()更快,并且在可能的情况下使用QuerySet [0]将需要第一个元素,并且您要检查它是否存在。但是,当count()更快时,它仅略微更快,因此建议在两者之间进行选择时始终使用exist()。” 问题答案: exist

  • rank ▲ ✰ vote url 15 789 144 1269 url 检查列表是否为空的最好方法 例如,传递下面: a = [] 我怎么检查a是空值? if not a: print "List is empty" 用隐藏的空列表的布尔值才是最Pythonic的方法.

  • 问题内容: 我有两种检查列表是否为空的方法 和 我的拱门告诉我,前者比后者更好。但是我认为后者更好。 任何人都可以澄清一下吗? 问题答案: 您应该 绝对 使用。计算任意列表的可能会很昂贵。即使确认是否有任何元素 可以 是昂贵的,当然,但没有优化不能 也 让速度更快,而相反的情况并非如此。 例如,假设你有一个链表结构,它 并没有 缓存的大小(而 做 )。然后将变为O(N)运算,而仍为。 当然,另外,

  • 如何检查字典是否为空?更具体地说,我的程序从字典中的某个键开始,我有一个循环,循环迭代直到字典中有键为止。整体上algo是这样的: 从Dict中的某个键开始 当Dict中有键时 对Dict中的第一个键执行某些操作 删除第一个键 请注意,上面循环中的可能会向字典中添加新键。我尝试了中的值 但在while循环中添加了一些新键,因此它会失败。