我想从java搜索文件夹/目录,然后进入java中的那些文件夹/目录。我想这叫做系统工具?那里有任何教程,或关于这个主题的书籍?
谢谢;)
答案 0 :(得分:9)
我使用此代码获取文件夹中的所有ZIP文件。以递归方式调用此方法,一次又一次地检查文件对象是否为子目录。
public List<String> getFiles(String folder) {
List<String> list = new ArrayList<String>();
File dir = new File(folder);
if(dir.isDirectory()) {
FileFilter filter = new FileFilter() {
public boolean accept(File file) {
boolean flag = false;
if(file.isFile() && !file.isDirectory()) {
String filename = file.getName();
if(!filename.endsWith(".zip")) {
return true;
}
return false;
}
};
File[] fileNames = dir.listFiles(filter);
for (File file : fileNames) {
list.add(file.getName());
}
return list;
}
答案 1 :(得分:5)
你可以使用Apache Commons FileUtils(参见:http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html),特别是那里的listFiles方法,它可以递归地执行此操作并使用过滤器(因此它可以节省您自己的递归写入并回答您提到的搜索)。
答案 2 :(得分:2)
如果要导航文件系统,请查看File和list()方法。您很可能需要一些递归方法来向下浏览层次结构。
答案 3 :(得分:2)
答案 4 :(得分:1)
我不知道有关该特定主题的任何教程或书籍,但是这样做的方法是使用java.io.File
类。例如,您可以使用list()
获取目录内容的列表。然后,只需使用isDirectory()
并递归搜索整个文件树。
答案 5 :(得分:1)
我使用了Apache Commons VFS。
很高兴将它用于目录的读取内容,如下所示:
FileSystemManager fsManager = VFS.getManager();
FileObject path = fsManager.resolveFile( "file:///tmp" );
FileObject[] children = path.getChildren();
System.out.println( "Children of " + path.getName().getURI() );
for ( int i = 0; i < children.length; i++ )
{
System.out.println( children[ i ].getName().getBaseName() );
}
您可以使用getType()检查子项是文件,文件夹还是其他内容。
相同的代码适用于读取ZIP或JAR文件,FTP,SFTP,...只需更改resolveFile as you can see here的URL。
答案 6 :(得分:0)
您可以使用java.io.File类进行搜索。
答案 7 :(得分:0)
这是另一个例子:
for (File file : File.listRoots()[0].listFiles()) {
System.out.println(file);
}
同样,只打印目录:
FileFilter isDirectory = new FileFilter() {
public boolean accept(File pathname) {
return pathname.isDirectory();
}
};
for (File file : File.listRoots()[0].listFiles(isDirectory)) {
System.out.println(file);
}
答案 8 :(得分:0)
很好的例子: http://www.leepoint.net/notes-java/io/10file/20recursivelist.html
顺便说一句。我建议阅读整篇文章。 http://www.leepoint.net/notes-java/