我想读取目录中的所有文件名,到目前为止,除了检查特定文件之外,该方法有效。 它是一个小的统计程序,用于检查“创建”、“删除”和“编辑”实体文件。
我想搜索实体文件的名称 (例如,如果实体“发布”存在,“创建”或“编辑”的值将增加一,但是 如果目录中不存在具有该名称的实体,则“已删除”值将增加 1)。
我的代码:
package Statistik;
import java.io.File;
import java.util.Arrays;
/**
*
* @author KyoAkashi
*/
public class Statistik {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
File folder = new File("C:\\Users\\Administrator\\Desktop\\Namens Test");
File[] FileNames = folder.listFiles();
for (int i = 0; i < FileNames.length; i++) {
if (FileNames[i].isFile()) {
System.out.println("File " + FileNames[i].getName());
} else if (FileNames[i].isDirectory()) {
System.out.println("Directory " + FileNames[i].getName());
}
}
if(Arrays.asList(FileNames).contains("File 001.txt")){
System.out.println("it exists");
}
else
System.out.println("it doesn't exist");
}
}
编辑: 来自乔恩·斯基特的请求:
- 我在上面扩展了我的问题
- 我想要的输出是:此目录中的文件“它存在”
- 我也尝试过创建一个新文件,但没有按照上述方式工作
- 没有错误消息,只是没有得到应有的结果
最佳答案
Arrays.asList(FileNames)
返回 File
对象的 List
,因此您不能指望找到 String
就在里面。
这就是为什么 Arrays.asList(FileNames).contains("File 001.txt") 始终返回 false 的原因。
您必须创建实际文件名列表才能使 .contains("File 001.txt")
正常工作。
您可以使用 Java 8 Streams 以简洁的方式做到这一点:
Stream.of(FileNames).map(File::getName).anyMatch(s->s.contains("File 001.txt""))
关于java - 从数组中读取和检查值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26924700/