Java 查看文件是否为空

Java 查看文件是否为空,java,Java,可能重复: 如何在Java 7中检查文件是否为空? 我使用ObjectInputStream中的available()方法进行了尝试,但即使文件包含数据,它也始终返回零 BufferedReader br = new BufferedReader(new FileReader("your_location")); if (br.readLine()) == null ) { System.out.println("No errors, and file empty"); }

可能重复:

如何在Java 7中检查文件是否为空?
我使用ObjectInputStream中的available()方法进行了尝试,但即使文件包含数据,它也始终返回零

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

请参见J2RE javadocs中的()

因此
新文件(“文件路径”).length()>0
应该可以做到这一点。对不起,我刚才的回答是:(

可缩短为:

boolean empty = file.length() == 0;
因为根据文档,该方法返回

此抽象路径名表示的文件的长度(字节),如果文件不存在,则为0L


我想强调的是,如果我们想检查文件是否是空的,那么我们必须考虑它是否存在。

@ SaSs41链接的帖子几乎列举了所有人所知道的方法。这些方法中大多数都是正确的,只是OP有一个非常特殊的问题:实际上不是空的文件(里面有两个字节的BOM)。被认为是空的。现在我清楚地理解了你的观点。是的,仅仅为了判断一个文件是否是空的而读一整行真的是一场灾难。如果第一行很大,情况会变得更糟。谢谢!嘿@Jack,我想这应该是我下面的答案。如果我错了,请纠正我。这取决于你为什么需要检查一个fILE是空的。您可能需要将一个不存在的文件视为空的。因此,您的答案可以和我的一样正确,而不是更确切。但是我觉得即使在这种情况下,如果文件不存在,我们也不必检查它是否为空。因此,对于一个不存在的文件,我的答案保存了一个调用file。.效率略有提高,但我觉得这是合乎逻辑的。如果我错了,请纠正我。在您的代码段中,如果文件不存在,则
empty==false
。在我的代码段中,如果文件不存在,则第一个条件求值为true,因此不检查文件的长度,但结果不同(请记住,这是一个
|
,计算的惰性适用于
&&
|
运算符)。此外,在任何情况下都不需要检查是否存在,因为
file.length()
返回
0
如果文件不存在,只是为了可读性问题。由于Java 7,一个棘手的解决方案是使用Java.nio.Files类。然后,您可以在一行中执行相同的操作。例如:
System.out.println(Files.size(path.get(“file_path”));
不适用于Unicode文件(详细信息请参见重复消息中的答案)。我认为这是正确的答案。如果您检查length方法的javadocs,它会说如果文件“无效”,它将返回0。
File file = new File(path);

boolean empty = !file.exists() || file.length() == 0;
boolean empty = file.length() == 0;
File file = new File("file_path");
System.out.println(file.length());
        File file = new File("path.txt");
        if (file.exists()) {
            FileReader fr = new FileReader(file);
            if (fr.read() == -1) {
                System.out.println("EMPTY");
            } else {
                System.out.println("NOT EMPTY");
            }
        } else {
            System.out.println("DOES NOT EXISTS");
        }
File file = new File(path);

boolean empty = file.exists() && file.length() == 0;