如果文件夹包含文件然后它显示在Java中忽略其他?

时间:2015-07-03 08:28:35

标签: java subdirectory

如果文件夹包含文件,则只显示Java中的目录名称。我们怎么能这样做。截至目前我正在获取主文件夹和子文件夹名称。请查找快照以便更好地理解

public class GetChild {


    private static FileFilter onlyDirectories = new FileFilter() {
        @Override
        public boolean accept(File file) {
            return file.isDirectory();
        }
    };
     public static void main(String[] args) {
        File currentDir = new File("E:\\Folder"); // current directory
        displayDirectoryContents(currentDir);
    }

    public static void displayDirectoryContents(File dir) {
        StringBuilder sb1 = new StringBuilder("");
       doDisplayDirectoryContents(dir, sb1);

    }

    private static void doDisplayDirectoryContents(File dir, StringBuilder sb1) {
        File[] files = dir.listFiles(onlyDirectories);
        for (File file : files) {
            try {
                System.out.println("file.getCanonicalPath()===>" + file.getCanonicalPath());
                doDisplayDirectoryContents(file, sb1);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
      }
}

enter image description here

2 个答案:

答案 0 :(得分:1)

你正在以一种非常复杂的方式做事......希望这澄清......

String filename = "myFile";
String folderPath = "E:\\Folder";

File folder = new File(folderPath);
File file = new File(folderPath, filename);

if (folder.exists() && folder.isDirectory() && file.exists() && file.isFile()) {
    // show file
} else {
    // error
}

如果你想要的是探索给定文件夹的所有文件夹,并查看你必须使用的文件是否是递归。检查mkyongSO解决方案......

更新:在这里,您可以使用我的解决方案进行递归,并且只打印包含文件的文件夹(不是文件夹)。

public static void main(String[] args) throws Exception{
        String folderPath = "C:\\Android";

        File folder = new File(folderPath);

        if (folder.exists())
            read(folder);
    }

    public static void read(File folder) {
        if (!folder.canRead() || folder.isFile()) return;
        File[] files = folder.listFiles();
        if (files.length < 1) return;
        boolean hasFile  = false;
        for (File f : files) {
            if (f.isDirectory())
                read(f);
            if (f.isFile())
                hasFile = true;
        }

        if (hasFile) System.out.println(folder.getAbsolutePath());
    }
}

答案 1 :(得分:1)

您可以使用FileFilterFile.listFiles()的组合来实现此目标。

FileFilter filter = new FileFilter() {
    @Override
    public boolean accept(File pathname) {
        return pathname.isFile();
    }
};
if (file.listFiles(filter).length > 0) {
    System.out.println("file.getCanonicalPath()===>" + file.getCanonicalPath());
else
    continue;