簡體   English   中英

從Java讀取文件系統結構

[英]read file system structure from 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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM