gpt4 book ai didi

java - 从数组中读取和检查值

转载 作者:行者123 更新时间:2023-12-01 22:35:36 25 4
gpt4 key购买 nike

我想读取目录中的所有文件名,到目前为止,除了检查特定文件之外,该方法有效。它是一个小的统计程序,用于检查“创建”、“删除”和“编辑”实体文件。

我想搜索实体文件的名称(例如,如果实体“发布”存在,“创建”或“编辑”的值将增加一,但是如果目录中不存在具有该名称的实体,则“已删除”值将增加 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com