从 Java 读取文件系统结构



是否可以读取目录中文件夹(不是子文件夹)的所有名称并将列表保存在ArrayList等中?

例如 - 如果一个目录中有以下文件夹 - CLIENT1、CLIENT2、CLIENT3等。我希望ArrayList是这样的 - [CLIENT1,CLIENT2,CLIENT3等]。

这些文件夹位于Unix服务器中,因此java代码或shell脚本(bash/tcsh/etc)或其组合都可以。

试试这个:

File dir = new File("directoryName");
File temp;
String[] children = dir.list();
if (children !=null) {
    for (int i=0; i<children.length; i++) {
        temp = new File(children[i]);
        if(temp.isDirectory()) //add children[i] to arrayList
    }
}

下面的 Java 代码片段应该对您有所帮助。它将返回目录中所有文件夹的列表。它可能会根据您处理任何可能的 IO 异常的方式返回一个空列表。

public List<String> getDirectoriesInFolder(String folderPath)
{
     List<String> folderNames = new ArrayList<String>();
     try
     {
         File directory = new File (folderPath);
         String[] allFilesInFolder = directory.list();
         for(String fileName : allFilesInFolder)
         {
            File f = new File(fileName);
            if(f.isDirectory)
            {
               folderNames.add(fileName);
            } 
         }
     }
     catch(IOException iex)
     {
          //Do any exception handling here...
     }
     return folderNames; 
}

如果要使用 Shell 脚本执行此操作,则以下链接中提供的指南应有助于找到解决方案:

帮助脚本列出目录

bash:将ls的输出放入数组中

这对我来说比每次构建new File()的生硬迭代要干净一些。

public class DirFilter implements FileFilter {
    public static FileFilter INSTANCE = new DirFilter();
    @Override
    public boolean accept(File file) {
        return file.isDirectory();
    }
}
File startDir = .....;
List<File> children = Arrays.asList(startDir.listFiles(DirFilter.INSTANCE));

最新更新