Getting the filenames of all files in a folder
Possible Duplicate:
Read all files in a folder
我需要创建一个文件夹中所有文件名的列表。
例如,如果我有:
1 2 3
| 000.jpg
012.jpg
013.jpg |
我想把它们存储在一个以[000,012,013]为值的ArrayList中。
在Java中最好的方法是什么?
PS:我在Mac OS X上
你可以这样做:
1 2 3 4 5 6 7 8 9 10
| 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文件可能也没有扩展。
- btw如果你想要当前文件夹,你可以使用File folder = new File (".");…不一样。示例new File("./"+your_file);
- @roflcptr异常一个疑问。这个列表文件[i]指向文件夹中的第一个文件(上次创建的)还是最后一个文件(首次创建的)?
- 在我的文件夹中只有*.xml文件,是否有任何选项可以检查只有那些文件才应被视为文件?
- 只是一个建议,您还可以使用一个增强的for循环,如:for (File file : listOfFiles)。然后在每个迭代中简单地引用file,而不是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 > 0) { /** The oldest file comes first **/ Arrays.sort(fileList, LastModifiedFileComparator.LASTMODIFIED_COMPARATOR); } //filesList now contains all the JPG/jpg files in sorted order。
创建一个File对象,将目录路径传递给构造函数。使用listFiles()检索目录中每个文件的File对象数组,然后调用getName()方法获取文件名。
1 2 3 4 5 6 7 8 9 10 11
| 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可能会有所帮助。:)
- 在我的文件夹中只有*.xml文件,是否有任何选项可以检查只有那些文件才应被视为文件?
- 您可以在listfiles上放置一个过滤器,以便只返回扩展名为File[] files = new File("/path/to/the/directory").listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith(".xml"); } }); 的文件。
- 如果我同时想要*.xml&;*.txt文件怎么办?@ IanB
- @sumitkanoje您可以将过滤器更改为返回名称.endswith(".xml")name.endswith(".jpg")。
- file[]files=new file(fullpath).listfiles();listnames=array.aslist(files).parallelstream().map(file->file.getname()).collect(collectors.tolist());
- 可以使用lambda表达式(Java 8 +)过滤文件:EDCOX1×8
- 我希望使用filter可以做一些智能缓冲,但是看看list(filenamefilter filter)的java8实现,我有点失望它只是做了file root=file("/path/to/the/directory");foreach(string filename:root.list())accept(root,filename)然后从list
到字符串[]。
下面介绍如何查看文档。
首先,你要处理的是IO,所以看看java.io包。
有两个类看起来很有趣:filefilter和filenamefilter。当我单击第一个时,它显示在文件类中有一个listFiles()方法。该方法的文档显示:
Returns an array of abstract pathnames
denoting the files in the directory
denoted by this abstract pathname.
在Filejavadoc中向上滚动,我看到了构造函数。我只需要创建一个File实例并调用listFiles()就可以了。进一步滚动,我可以看到一些关于如何在不同操作系统中命名文件的信息。
- 给一个人一条鱼,你就喂他一天;教他钓鱼,你就喂他一辈子。