java 判断文件 为空 java判断文件夹为空_读取文件路径名


介绍

在Java中,使用文件和目录相当普遍。我们也经常对那些文件和目录的内容感兴趣。

根据文件的内容,我们可能希望表现不同。我们可能正在将一些数据写入文件,我们首先要检查它是否已经包含一些信息,然后再覆盖它。同样,如果目录为空,我们可能要删除它。在这种情况下,了解是否为空非常重要。

在本教程中,我们将介绍一些有关如何检查Java中文件或目录是否为空的示例。

检查Java中文件是否为空

有两种方法检查aFile是否为空。

我们将处理两个文件,一个为空文件,另一个为非空文件:


09/17/2020  01:00 PM                 0 file
09/17/2020  01:00 PM                 2 file2


file0字节长度,file2而是2字节长度。

值得注意的是,在对文件或目录执行任何操作之前,应检查文件或目录是否存在及其类型,以避免运行错误的方法。

使用File.length()

根据其文档,File对象是“文件和目录路径名的抽象表示”。每个File对象都有获取有关该特定文件的信息的方法。

让我们继续创建一个简单的辅助方法,true如果File的长度为0false则返回,否则返回:


public boolean isFileEmpty(File file) {
    return file.length() == 0;
}


现在,让我们在一个空的非空文件上对其进行测试:


File file1 = new File("/file");
File file2 = new File("/file2");

System.out.println(isFileEmpty(file1));
System.out.println(isFileEmpty(file2));


此代码返回:


true
false


使用BufferedReader

另一种检查File的长度是否正确的方法0是使用BufferedReader。它使我们能够从流(例如文件)中访问字符内容。如果文件中没有内容,则为空:


public boolean isFileEmpty(File file) {
    BufferedReader br = new BufferedReader(new FileReader(file));     
    return br.readLine() == null;
}


该方法的声明与以前相同:接受aFile并返回a boolean。尽管这次,我们实例化了一个,BufferedReader并为其提供了一个FileReader接受我们的File。它比以前稍微复杂一些,但它也能很好地完成工作。

然后,如果BufferedReader没有什么要从文件中读取的,我们知道它为空。

再次,让我们在一个空文件和一个非空文件上进行测试:


File file1 = new File("/file");
File file2 = new File("/file2");

System.out.println(isFileEmpty(file1));
System.out.println(isFileEmpty(file2));


此代码返回:


true
false


检查Java中目录是否为空

还有两种方法可以检查Java中目录是否为空。

使用File.list()

File类有收集所有的文件和目录(一种便利的方法,这意味着文件和目录)指定的目录中。我们可以使用此方法检查此类条目的数量是否为零:


public boolean isDirectoryEmpty(File directory) {  
    String[] files = directory.list();
    return files.length == 0;  
}


该方法返回条目名称的数组。如果length此数组的为0,则目录为空。

让我们在一个空的非空目录上运行此命令:


File directory1 = new File("/empty_directory");
File directory2 = new File("/directory");

System.out.println(isDirectoryEmpty(directory1));
System.out.println(isDirectoryEmpty(directory1));


返回:


true
false


使用DirectoryStream

另一种快速但更先进的技术涉及使用流。首先,我们DirectoryStream通过调用Files.newDirectoryStream()class创建一个新的。此方法接受a,Path因此我们需要通过调用方法将其转换File为:PathtoPath()


public boolean isDirectoryEmpty(File directory) throws IOException {
    DirectoryStream<Path> stream = Files.newDirectoryStream(directory.toPath());
    return !stream.iterator().hasNext();  
}


然后,我们收集流的迭代器,并通过调用来检查它是否包含下一个条目hasNext()。如果它不包含至少一项,则该目录为空。

让我们运行以下代码:


File directory1 = new File("/empty_directory");
File directory2 = new File("/directory");

System.out.println(isDirectoryEmpty(directory1));
System.out.println(isDirectoryEmpty(directory1));


结果是:


true
false


结论

在本教程中,我们提供了一些示例来检查文件和目录是否为空。首先,我们使用File类及其length()方法检查了文件是否为空,然后使用一种BufferedReader方法。

然后,我们通过使用File.list()和创建一个目录来检查目录是否为空DirectoryStream