如何";“四处走动”;在Java文件系统中
我想从java中搜索文件夹/目录,然后进入java中的文件夹/目录。我猜这叫做系统实用程序?有关于这个主题的教程或书籍吗如何";“四处走动”;在Java文件系统中,java,linux,filesystems,Java,Linux,Filesystems,我想从java中搜索文件夹/目录,然后进入java中的文件夹/目录。我猜这叫做系统实用程序?有关于这个主题的教程或书籍吗 谢谢;) 您可以使用java.io.File类进行搜索 我使用此代码获取文件夹中的所有ZIP文件。调用此函数,反复检查文件对象是否为子目录 public List<String> getFiles(String folder) { List<String> list = new ArrayList<String>(); F
谢谢;) 您可以使用java.io.File类进行搜索 我使用此代码获取文件夹中的所有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;
public List getFiles(字符串文件夹){
列表=新的ArrayList();
文件目录=新文件(文件夹);
if(dir.isDirectory()){
FileFilter=newfilefilter(){
公共布尔接受(文件){
布尔标志=假;
if(file.isFile()&&!file.isDirectory()){
字符串文件名=file.getName();
如果(!filename.endsWith(“.zip”)){
返回true;
}
返回false;
}
};
File[]filename=dir.listFiles(过滤器);
用于(文件名:文件名){
list.add(file.getName());
}
退货清单;
}如果要浏览文件系统,请查看和列表()方法。您很可能需要一些递归方法来向下浏览层次结构。我不知道关于该特定主题的任何教程或书籍,但方法是使用类。例如,您可以使用获取目录内容的列表。然后只需使用
isDirectory()
和递归来搜索整个文件树。您可以使用Apache Commons FileUtils(请参阅:)特别是其中的listFiles方法,它可以递归地执行此操作并使用过滤器(因此它可以节省您自己编写递归并回答您提到的搜索)。我建议您使用另一个示例:
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);
}
好例子:
顺便说一句,我建议你通读整本书。我用过
使用它读取目录的内容很好,如下所示:
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() );
}
FileSystemManager fsManager=VFS.getManager();
FileObject path=fsManager.resolveFile(“file:///tmp" );
FileObject[]children=path.getChildren();
System.out.println(“+path.getName().getURI()的子项”);
for(int i=0;i
您可以检查子项是否与文件、文件夹或其他内容不同
同样的代码用于读取ZIP或JAR文件、FTP、SFTP等,只需更改resolveFile的URL。为什么要使用字符串/文件名而不是文件对象?上面的代码示例来自我的一个模块,其中我们只需要生成文件夹中所有ZIP文件的文件名,因此,将其保留为Stri更有意义ng并将其传递给Web服务进行健全性检查。这允许我们保持较低的占用空间。