如何使用文件列表中的一个文件

时间:2019-04-23 11:34:53

标签: java file csv

File folder = new File("C:/Path/Dir");
        File[] listOfFiles = folder.listFiles();


        for (File file : listOfFiles) {
            if (file.isFile()) {
                String csvFile = file.getName();
                System.out.println(csvFile);
            }
        }

Output:
1.csv
2.csv
3.csv

我的Dir中有3个文件,所以当我全部获得3个文件后,如何在文件阅读器中使用第一个文件:

 //File reader
            Path path = Paths.get(csvFile);
            int lineCount = (int) Files.lines(path).count();

7 个答案:

答案 0 :(得分:1)

如果您仅针对第一个文件,则只需使用listOfFiles[0].getName()来获取fileName。

如果要使用满足特定条件的文件的路径,则可以使用以下代码:

File folder = new File("C:/Path/Dir");
File[] listOfFiles = folder.listFiles();

String csvFile = null;
for (File file : listOfFiles) {
    if (file.isFile() && <condition>) {
       csvFile = file.getName();
       System.out.println(csvFile);
       break;
     }
}

答案 1 :(得分:0)

listOfFiles[0]应该让您拥有第一个要素。

请阅读有关Java数组的一些教程: https://www.javatpoint.com/array-in-java

答案 2 :(得分:0)

那里:

File folder = new File("C:/Path/Dir");
File[] listOfFiles = folder.listFiles();


for (File file : listOfFiles) {
    if (file.isFile()) {
        String csvFile = file.getName();
        System.out.println(csvFile);

        // Reader (for all files)
        try {
            FileReader reader = new FileReader(file);
        } catch (IOException e) { /* TODO */ }

        // Line count (for all files)
        int lineCount = (int) Files.lines(file.toPath()).count();
    }
}

// Reader (for first file)
File firstFile = listOfFiles[0];

try {
    FileReader reader = new FileReader(file);
} catch (IOException e) { /* TODO */ }

// Line count (for first file)
int lineCount = (int) Files.lines(firstFile.toPath()).count();

答案 3 :(得分:0)

for (int i = 0; i < listOfFiles.length; i++) {
  if (listOfFiles[i].isFile()) {
    System.out.println("File " + listOfFiles[i].getName());
  } else if (listOfFiles[i].isDirectory()) {
    System.out.println("Directory " + listOfFiles[i].getName());
  }
}

然后我用 我的文件阅读器中的listOfFiles [i]

对不起,暂时转储了)

答案 4 :(得分:0)

当您仅对文件(而不是目录等)感兴趣时,可以在File.listFiles调用中指定此条件:

    File[] files=new File("c:/tmp").listFiles(new FileFilter() {

        @Override
        public boolean accept(File file) {
            return file.isFile();
        }
    });

或使用Java 8 Lambdas

    File[] files=new File("c:/tmp").listFiles((f)->{return f.isFile();});

在文件列表中,您可以选择第一个文件,就像选择数组的第一个元素一样:

    System.out.println("First file:"+(files.length>0?files[0]:" no files"));

答案 5 :(得分:0)

简单,您将所有文件放在文件数组中

File[] listOfFiles = folder.listFiles();

因此您可以按如下所示直接按索引访问第一个文件(索引以0开头)

Path path = Paths.get(listOfFiles[0].getName());
int lineCount = (int) Files.lines(path).count();

答案 6 :(得分:0)

您需要弄清两件事:第一是只读文件而不是文件夹;第二是哪个文件是fisrt文件。以下代码假定您要读取文件并按字典顺序按文件名获取第一个文件:

private static void readFirstFile(String path) throws Exception {
    File folder = new File(path);
    File[] files = folder.listFiles(File::isFile);
    if (null == files || files.length < 3) {
        return;
    }
    Arrays.sort(files, Comparator.comparing(File::getName));
    List<String> lines = FileUtils.readLines(files[0], "UTF-8");
    lines.forEach(System.out::println);
}