繁体   English   中英

Java:单行列表目录中的Dirs?

[英]Java: one-liner to list Dirs in a directory?

One-Liner列出TXT文件。

import java.io.File;
import java.io.FilenameFilter;
...
files = dir.listFiles(new FilenameFilter() {
           public boolean accept(File dir, String name) {
                return name.toLowerCase().endsWith(".txt");
                }
           }
        );

资源。

是否有一个单行列表在目录中列出dirs?

public static void main (String[] args)  throws Exception {
    File dir = new File("yourDir");

    FileFilter fileFilter = new FileFilter() {
        public boolean accept(File file) {
            return file.isDirectory();
        }
    };

    File[] files  = dir.listFiles(fileFilter);

    for (File f : files)
        System.out.println( f.getName() );
}

这使用Commons IO,但实际上是列出所有目录名称的最简单方法。 它还有一套更强大的过滤器,可用于其他目的:

String[] dirNames = new File("/Users/jonathan").list(DirectoryFileFilter.INSTANCE);
for (String dirName: dirNames) 
    System.out.println("Directory Name: " + dirName);
import java.io.File;
import java.io.FileFilter;
...
files = dir.listFiles(new FileFilter() { 
       public boolean accept(File pathname) { 
            return pathname.isDirectory();
       } 
    });

注意使用listFiles(FileFilter)而不是listFiles(FilenameFilter)

看看这个代码,

import java.io.File;
import java.io.FilenameFilter;

public class FileNameFilter 
{
   public static void main(String[] args) 
   {
      File fl = new File("yourDir");

      // here we are retrieving only .txt files

      FilenameFilter fnf = new FilenameFilter()
      { 
         @Override
         public boolean accept(File dir, String name)
         {
            if(name.endsWith(".txt"))
            {
               return true;
            }
            else
            {
               return false;
            }
         }
      };

      // passing "fnf" object to listFiles() method to retrieve only html files

      File[] files = fl.listFiles(fnf);

      for(File file : files) 
      {
         System.out.println(file.getName());
      }
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM