我需要读取文件夹中所有“.txt”文件(用户需选择该文件夹)。
请告知如何操作?
请告知如何操作?
你可以使用FilenameFilter
类,它的使用非常简单。
public static void main(String[] args) throws IOException {
File f = new File("c:\\mydirectory");
FilenameFilter textFilter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".txt");
}
};
File[] files = f.listFiles(textFilter);
for (File file : files) {
if (file.isDirectory()) {
System.out.print("directory:");
} else {
System.out.print(" file:");
}
System.out.println(file.getCanonicalPath());
}
}
只需创建一个filenamefilter
实例并覆盖accept方法,以您想要的方式处理即可。
File directory= new File("user submits directory");
for (File file : directory.listFiles())
{
if (FileNameUtils.getExtension(file.getName()).equals("txt"))
{
//dom something here.
}
}
您可以在此处找到FileNameUtils.getExtension()的相关信息:http://commons.apache.org/io/apidocs/org/apache/commons/io/FilenameUtils.html#getExtension%28java.lang.String%29。
编辑:根据这篇之前的SO文章,您似乎想要从Web浏览器访问文件结构。由于安全原因,您所想做的事情是不可能的。
public static void parseDir(File dirPath)
{
File files[] = null;
if(dirPath.isDirectory())
{
files = dirPath.listFiles();
for(File dirFiles:files)
{
if(dirFiles.isDirectory())
{
parseDir(dirFiles);
}
else
{
if(dirFiles.getName().endsWith(".txt"))
{
//do your processing here....
}
}
}
}
else
{
if(dirPath.getName().endsWith(".txt"))
{
//do your processing here....
}
}
}
看看这是否有帮助。
File userDir=new File("userEnteredDir");
File[] allfiles=useDir.listFiles();
使用 getExtension() 方法迭代 allFiles,以过滤 .txt 文件