Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何";“四处走动”;在Java文件系统中_Java_Linux_Filesystems - Fatal编程技术网

如何";“四处走动”;在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中搜索文件夹/目录,然后进入java中的文件夹/目录。我猜这叫做系统实用程序?有关于这个主题的教程或书籍吗


谢谢;)

您可以使用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服务进行健全性检查。这允许我们保持较低的占用空间。