7

我跟着这个问题

现在就我而言,我有 720 个文件以这种方式命名:“dom 24 mar 2013_00.50.35_128.txt”,每个文件都有不同的日期和时间。在测试阶段,我使用带有特定 txt 文件的 Scanner 对其进行一些操作:

Scanner s = new Scanner(new File("stuff.txt"));

我的问题是:

如何重复使用扫描仪并读取所有 720 个文件,而无需在扫描仪上设置精确名称?

谢谢

4

4 回答 4

16

假设您将所有文件放在一个地方:

File dir = new File("path/to/files/");

for (File file : dir.listFiles()) {
    Scanner s = new Scanner(file);
    ...
    s.close();
}

请注意,如果您有任何不想包含的文件,您可以提供listFiles()一个FileFilter参数来过滤掉它们。

于 2013-07-18T16:38:02.993 回答
7

是的,通过将文件对象指向一个目录来创建它,然后列出该目录的文件。

File dir = new File("Dir/ToYour/Files");

if(dir.isDir()) {
   for(File file : dir.listFiles()) {
      if(file.isFile()) {
         //do stuff on a file
      }
   }
} else {
   //do stuff on a file
}
于 2013-07-18T16:39:01.717 回答
3

你可以这样试试

 File folder = new File("D:\\DestFile");
 File[] listOfFiles = folder.listFiles();

 for (File file : listOfFiles) {
 if (file.isFile()&&(file.getName().substring(file.getName().lastIndexOf('.')+1).equals("txt"))) {
   // Scanner 
  }
 }
于 2013-07-18T16:51:21.357 回答
1
    File file = new File(folderNameFromWhereToRead);

    if(file!=null && file.exists()){
        File[] listOfFiles = file.listFiles();

        if(listOfFiles!=null){

            for (int i = 0; i < listOfFiles.length; i++) {
                if (listOfFiles[i].isFile()) {
                      // DO work
                }
            }
        }
    }
于 2013-07-18T16:41:45.260 回答