[英]how to get name of all file in a directory and sub-directory in java
I have a directory which consist of some different sub directory which every one have several files.我有一个目录,其中包含一些不同的子目录,每个子目录都有几个文件。 how can i get name of all file?
如何获取所有文件的名称?
If you want to use a library, try the listFiles method from apache commons io FileUtils , which will recurse into directories for you.如果您想使用库,请尝试 apache commons io FileUtils 中的listFiles方法,它会为您递归到目录中。
Here's an example of how you could call it to find all files named *.dat
and *.txt
in any directory anywhere under the specified starting directory:下面是一个示例,说明如何调用它以在指定起始目录下的任何目录中查找名为
*.dat
和*.txt
所有文件:
Collection<File> files = FileUtils.listFiles(new File("my/dir/path"), {"dat", "txt"}, true);
public static void walkin(File dir) {
String pattern = "file pattern"; //for example ".java"
File listFile[] = dir.listFiles();
if(listFile != null) {
for(int i=0; i<listFile.length; i++) {
if(listFile[i].isDirectory()) {
walkin(listFile[i]);
} else {
if(listFile[i].getName().endsWith(pattern))
{
System.out.println(listFile[i].getPath());
}
}
}
}
}
This programme will display the whole structure with nested files and nested sub directories with file system.该程序将显示带有嵌套文件和带有文件系统的嵌套子目录的整个结构。
import java.io.File;
public class DirectoryStructure
{
static void RecursivePrint(File[] arr, int index, int level)
{
// terminate condition
if (index == arr.length) {
return;
}
// tabs for internal levels
for (int i = 0; i < level; i++) {
System.out.print("\t");
}
// for files
if (arr[index].isFile()) {
System.out.println(arr[index].getName());
}
// for sub-directories
else if (arr[index].isDirectory())
{
System.out.println("[" + arr[index].getName() + "]");
// recursion for sub-directories
RecursivePrint(arr[index].listFiles(), 0, level + 1);
}
// recursion for main directory
RecursivePrint(arr, ++index, level);
}
// Driver Method
public static void main(String[] args)
{
// Provide full path for directory(change accordingly)
String maindirpath = "E:\\dms\\Notes";
// File object
File maindir = new File(maindirpath);
if (maindir.exists() && maindir.isDirectory())
{
// array for files and sub-directories
// of directory pointed by maindir
File arr[] = maindir.listFiles();
System.out.println("**********************************************");
System.out.println("Files from main directory : " + maindir);
System.out.println("**********************************************");
// Calling recursive method
RecursivePrint(arr, 0, 0);
}
}
}
递归遍历目录结构,收集所有不是子目录的文件的名称。
您正在寻找 File.list() 仔细查看 javadoc 以获取更多详细信息。
To list a directory using Java do something similar to this要使用 Java 列出目录,请执行与此类似的操作
File dir = new File(fname);
String[] list = dir.list();
if(list == null){
System.out.println("Specified directory does not exist or is not a directory.");
System.exit(0);
}else{
//list the directory content
for(int i = 0; i < chld.length; i++){
String fileName = list[i];
System.out.println(fileName);
}
Most of this code comes from here, http://www.roseindia.net/java/beginners/DirectoryListing.shtml大部分代码来自这里, http://www.roseindia.net/java/beginners/DirectoryListing.shtml
Using Apache Commons使用 Apache Commons
String filePath = "/apps/fraud";
String[] acceptedExtension = {"ctl","otl","dat","csv","xls"};
String[] acceptedFolders = {"suresh","dir","kernel"};
Collection fileList = FileUtils.listFiles(
new File(filePath),
new SuffixFileFilter(acceptedExtension) ,
new NameFileFilter(acceptedFolders)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.