17

可能重复:
在 Windows 上的 Java 中检查文件是否为空的最有效方法

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

4

6 回答 6

34
File file = new File("file_path");
System.out.println(file.length());
于 2012-04-23T13:26:32.137 回答
18
File file = new File(path);

boolean empty = !file.exists() || file.length() == 0;

可以缩短为:

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

因为根据文档,该方法返回

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

于 2012-04-23T13:23:55.377 回答
4
File file = new File(path);

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

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

于 2012-04-23T17:01:09.120 回答
2
BufferedReader br = new BufferedReader(new FileReader("your_location"));     
if (br.readLine()) == null ) {
    System.out.println("No errors, and file empty");
}

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

于 2012-04-23T13:23:15.750 回答
1

根据J2RE javadocs:http ://docs.oracle.com/javase/7/docs/api/java/io/File.html#length ()

public long length()
    Returns the length of the file denoted by this abstract pathname. The return value is     unspecified if this pathname denotes a directory.

所以new File("path to your file").length() > 0应该做的伎俩。抱歉 bd 之前的回答。:(

于 2012-04-23T13:23:39.937 回答
0
        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");
        }
于 2012-04-23T13:28:56.820 回答