获取文件夹中所有文件的文件名[重复]

Posted

技术标签:

【中文标题】获取文件夹中所有文件的文件名[重复]【英文标题】:Getting the filenames of all files in a folder [duplicate] 【发布时间】:2011-08-07 08:29:31 【问题描述】:

我需要创建一个包含文件夹中所有文件名称的列表。

例如,如果我有:

000.jpg
012.jpg
013.jpg

我想将它们存储在 ArrayList 中,并以 [000,012,013] 作为值。

在 Java 中最好的方法是什么?

PS:我在 Mac OS X 上

【问题讨论】:

【参考方案1】:

你可以这样做:

File folder = new File("your/path");
File[] listOfFiles = folder.listFiles();

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());
  

您想只获取 JPEG 文件还是所有文件?

【讨论】:

是的,没有,但处理扩展取决于存在的扩展,因为 cos 文件也可能不存在扩展。 顺便说一句,如果你想要当前文件夹,你可以使用 File folder = new File ("."); ... 比相同的。例如new File("./"+your_file); @RoflcoptrException 一个疑问。这个 listofFiles[i] 是指向文件夹中的第一个文件(最后创建的)还是最后一个文件(第一个创建的)? 如何指定扩展名来获取.jpg文件? 如果您只想过滤掉 .JPG 文件并将结果排序在最旧的文件中,您可以像这样使用它:File dir = new File("/your/path"); FileFilter fileFilter = new WildcardFileFilter("*.JPG", IOCase.INSENSITIVE); // For taking both .JPG and .jpg files (useful in *nix env) File[] fileList = dir.listFiles(fileFilter); if (fileList.length &gt; 0) /** The oldest file comes first **/ Arrays.sort(fileList, LastModifiedFileComparator.LASTMODIFIED_COMPARATOR); //filesList now contains all the JPG/jpg files in sorted order【参考方案2】:

创建一个File 对象,将目录路径传递给构造函数。使用listFiles() 检索目录中每个文件的File 对象数组,然后调用getName() 方法获取文件名。

List<String> results = new ArrayList<String>();


File[] files = new File("/path/to/the/directory").listFiles();
//If this pathname does not denote a directory, then listFiles() returns null. 

for (File file : files) 
    if (file.isFile()) 
        results.add(file.getName());
    

【讨论】:

你应该打电话给listFiles() ;) @Progman 可能会有所帮助。 :) 可以在listFiles上加个过滤器,只返回带有特定扩展名File[] files = new File("/path/to/the/directory").listFiles(new FilenameFilter() @Override public boolean accept(File dir, String name) return name.endsWith(".xml"); ); 的文件 文件[] 文件 = 新文件(fullPath).listFiles(); List names = Arrays.asList(files).parallelStream().map(file -> file.getName()).collect(Collectors.toList()); 您可以使用 lambda 表达式(Java 8+)过滤文件:File[] files = new File("path/to/dir").listFiles((dir, name) -&gt; name.endsWith(".xml"));【参考方案3】:

查看documentation的方法如下。

首先,您正在处理 IO,因此请查看 java.io package。

有两个类看起来很有趣:FileFilter 和 FileNameFilter。当我点击第一个时,它告诉我File 类中有一个listFiles() 方法。该方法的文档说:

返回一个抽象路径名数组 表示目录中的文件 由这个抽象路径名表示。

File JavaDoc 中向上滚动,我看到了构造函数。这就是我创建File 实例并在其上调用listFiles() 所需的全部内容。进一步滚动,我可以看到一些关于文件在不同操作系统中如何命名的信息。

【讨论】:

给一个人一条鱼,你喂他一天;教一个人钓鱼,你就可以养活他们一辈子。

以上是关于获取文件夹中所有文件的文件名[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python:获取目录中所有* .txt文件的列表[重复]

获取树枝模板文件中使用的所有变量[重复]

如何在目标c中获取mac中所有文件的大小[重复]

在一个分支中获取我更改的所有文件[重复]

从重复的配置文件信息中获取 TransactionID

如何在 Solaris 中获取网络接口设备特定文件的列表 [重复]