读取和检查数组中的值

时间:2014-11-14 07:05:52

标签: 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");
    }

}

修改 从jon skeet requestet:

  • 我扩展了上面的问题
  • 我想要的输出是:“它存在”此目录中的文件
  • 我也尝试制作一个新文件,但它没有按上述方法工作
  • 没有错误信息,只是没有结果

3 个答案:

答案 0 :(得分:2)

Arrays.asList(FileNames)会返回ListFile个对象,因此您无法在其中找到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""))

答案 1 :(得分:1)

您正在将File对象与无效的String进行比较,因为Arrays.asList(FileNames)将返回File对象的列表。可能你想要的是迭代数组并在文件名上做等于:

boolean doesFileExists = false;
for (File file : FileNames) {
    if (file.getName().equals("File 001.txt")) {
        System.out.println("it exists");
        doesFileExists = true;
        break;
    }
}
if (!doesFileExists) {
    System.out.println("it doesn't exist");
}

答案 2 :(得分:0)

您可以使用:

    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());
        }
    }
    File file = new File(folder.getPath() + "/File 001.txt");
    if (file.exists()) {
        System.out.println("it exists");
    } else {
        System.out.println("it doesn't exist");
    }