簡體   English   中英

Java中的文件列表。 煥然一新

[英]File listing in Java. A fresh look

這個問題很簡單,但是我的大腦沸騰了:((((我知道我應該遞歸函數,但是我不能適當地組織它,因為我受類型的限制(這是必要條件)

public String[] getFiles(String initialDir) {}

首先,在我的代碼中,我獲得了initialDir的文件和目錄的列表,然后遍歷所有元素,並借助以下命令查找目錄

.isDirectory()

然后我嘗試組織遞歸,例如:

String [] buf = getFiles(Filelist[i].toString());

麻煩來了

主要問題是,確定獲得的數據的大小並分配String []類型的必要數組,然后將所有遞歸結果和首次調用結果寫入String []類型的結果數組。

這真的讓我很煩,所以我需要換個角度看(也許有人會幫助您編寫函數中的代碼)。

謝謝大家!

您可以在方法的主體中使用列表,然后將其轉換為數組:

public String[] getFiles(String initialDir) {
   List<String> files = new ArrayList<String>();
   ...
       files.add(aLovelyFile);
   ...
       String[] moarFiles = getFiles(aLovelyDirectory);
       files.addAll(Arrays.asList(moarFiles));
   ...
   return files.toArray(new String[0]);
}

如果這不是家庭作業,請查看Apache Commons,特別是FileUtils#ListFiles

在給定目錄(及其子目錄)中查找文件。 找到的所有文件均由IOFileFilter過濾。 如果您的搜索應遞歸到子目錄,則可以傳遞IOFileFilter作為目錄。 您無需將DirectoryFileFilter(通過邏輯AND)綁定到此過濾器。 這種方法為您做到了。

示例:如果要搜索所有名為“ temp”的目錄,請傳入FileFilterUtils.NameFileFilter(“ temp”)

這將返回Collection<File> 可能正是您想要的。 當然,如果需要返回數組,請在末尾使用.toArray()

如果確實需要使用數組,但仍然不是家庭作業,那么可以使用Apache commons lang連接兩個數組:

String[] both = (String[]) ArrayUtils.addAll(first, second);

上面的內容是從答案中復制過來的,該答案如何在Java中連接兩個數組? ,這將為您提供所有想要的答案。

暫無
暫無

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

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