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

标签 java arrays file directory

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

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

相关文章:

file - 创建一个像 Dropbox 这样的文件夹连接远程位置

java - 具有数据库角色的 Spring Security SAML

java - Netty UnpooledDirectByteBuf

java - 使用java mongo驱动程序在java中实现mongodb查询

c# - 在 C# 中有效缩小二维数组

javascript - 如何简化这个 Javascript 文件

java - 方向改变时 Activity 不断重启

javascript - _.差异但允许重复

python - 在任意轴上迭代体积的更多 pythonic 方法?

c++ - 从大文件中读取格式化数据的最有效方法是什么?