2011-04-17 164 views

回答

553

你可以那样做:

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文件或所有文件?

+3

是的,但没有处理扩展名取决于扩展名存在COS文件可能没有扩展名也可能存在。 – Abhishek 2011-04-17 15:45:03

+4

btw如果你想要当前文件夹,你可以使用'文件夹=新文件(“。”);'...比相同。示例'new File(“./"+ your_file);' – Csanesz 2014-10-28 08:25:30

+2

@RoflcoptrException有一个疑问。这个listofFiles [i]指向文件夹中的第一个文件(最后创建的)还是最后一个文件(第一个创建的)?我的文件夹中的 – 2015-01-14 09:07:35

52

以下是如何查看documentation

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

有两个看起来很有趣的课程:FileFilterFileNameFilter。当我点击第一个时,它显示我在File类中有一个listFiles()方法。而对于该方法的文档说:

返回抽象路径名 表示此抽象路径名表示的目录 文件的数组。

在JavaDoc中滚动到File,我看到构造函数。这真的是我需要能够创建一个File实例,并呼吁listFiles()。滚动更进一步,我可以看到有关如何在不同的操作系统中命名文件的一些信息。

99

创建一个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()); 
    } 
} 
+0

你实际上应该调用'listFiles()';) – Progman 2011-04-17 15:48:29

+0

@Progman可能会有所帮助。 :) – 2011-04-17 15:50:41

+0

在我的文件夹中只有* .xml文件,是否有任何选项来检查只有那些应该被视为文件? – 2015-11-02 11:10:00