[英]In Java, how to copy all the files in a directory using the Path object?
[英]Retrieveing path of text files in Directory using Java
我在Java程序中将目录路径作为参数传递,并且目录具有各种类型的文件。 我想检索文本文件的路径,然后再搜索每个文本文件。 我是Java的新手,有什么建议呢?
即使这不是最佳解决方案,您也可以以此为起点。
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DirectoryWalker {
/**
* @param args
*/
private String extPtr = "^.+\\.txt$";
private Pattern ptr;
public DirectoryWalker(){
ptr = Pattern.compile(extPtr);
}
public static void main(String[] args) {
String entryPoint = "c:\\temp";
DirectoryWalker dw = new DirectoryWalker();
List<String> textFiles = dw.extractFiles(entryPoint);
for(String txtFile : textFiles){
System.out.println("File: "+txtFile);
}
}
public List<String> extractFiles(String startDir) {
List<String> textFiles = new ArrayList<String>();
if (startDir == null || startDir.length() == 0) {
throw new RuntimeException("Directory entry can't be null or empty");
}
File f = new File(startDir);
if (!f.isDirectory()) {
throw new RuntimeException("Path " + startDir + " is invalid");
}
File[] files = f.listFiles();
for (File tmpFile : files) {
if (tmpFile.isDirectory()) {
textFiles.addAll(extractFiles(tmpFile.getAbsolutePath()));
} else {
String path = tmpFile.getAbsolutePath();
Matcher matcher = ptr.matcher(path);
if(matcher.find()){
textFiles.add(path);
}
}
}
return textFiles;
}
}
创建一个代表目录的File对象,然后使用list()或listFiles()方法之一获取子级。 您可以将过滤器传递给这些过滤器,以控制返回的内容。
例如,下面的listFiles()方法将返回过滤器接受的目录中的文件数组。
public File[] listFiles(FileFilter filter)
首先阅读File API 。 您可以从字符串创建文件,甚至可以确定它是否exists()
isDirectory()
exists()
或isDirectory()
。 以及在该目录中列出子级。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.