1

我怎样才能像这样只输出目录和pdf文件

[目录]
_____blabla.pdf
_____fefewfew.pdf
[下一个目录]
_____afdfsdfsdf.pdf
_____...等等

?

希望得到一些帮助。这是我的代码:(代码不起作用。只是尝试了一些东西)我只需要在 main 方法中更改一些东西。其余的还可以。

import java.io.File;

public class DirPrinter implements DirVisitor{

    private String indent;

    public DirPrinter(){
        indent = "";
    }

    @Override
    public void enter(File dir) {
        System.out.printf("%s[%s]%n", indent, dir.getName());
        indent += "  ";
    }

    @Override
    public void visitFile(File f) {
        System.out.printf("%s%s%n", indent, f.getName());
    }

    @Override
    public void exit(File dir) {
        indent = indent.substring(2);
    }

}
------------------------------------------------------------------------
import java.io.File;

public interface DirVisitor {
    void enter(File dir);
    void visitFile(File f);
    void exit(File dir);
}
------------------------------------------------------------------------
import java.io.File;

public class FileTree {

    public static void traverse(File dir, DirVisitor v){
        if(!dir.isDirectory()){
            throw new IllegalArgumentException("No directory!");
        }
    }
}
------------------------------------------------------------------------
import java.io.File;
import java.io.FileFilter;

public class PdfFilter implements FileFilter{

    @Override
    public boolean accept(File pathname) {
        return (pathname.getName().toLowerCase().endsWith(".pdf") ||
                pathname.isDirectory());
    }
}
------------------------------------------------------------------------
import java.io.File;

public class Main {
    public static void main(String[] args){
        PdfFilter pdf = new PdfFilter();
        File directory = new File("C:/Users/Baum/Documents");
//      System.out.println(pdf.accept(directory));

        FileTree ft = new FileTree();
        DirVisitor d = new DirPrinter();

        String[] everythingInThisDir = directory.list();
        for (String name : everythingInThisDir) {
            System.out.println(name);
        }



        ft.traverse(directory, d);
        d.enter(directory);
        d.visitFile(directory);
        d.exit(directory);
    }
}
4

0 回答 0