2010-03-28 75 views
4

我目前需要將文件夾文件名的內容加載到arraylist中,但我不確定如何執行此操作。將文件名添加到java中的數組列表中

爲了說明問題,我有一個One.txt,Two.txt,Three.txt等文件夾我希望能夠將這個列表加載到一個數組列表中,這樣如果我要檢查數組列表的內容將是:

的ArrayList [0] =一個

ArrayList的[1] =兩個

ArrayList中[3] =三個

如果任何人都可以給我任何洞察到這一點,將是非常讚賞。

+0

看樣子你有一個數組,這比集合API中發現的一個ArrayList不同。 – 2010-03-28 17:51:05

+0

我一定是剛剛描述它,我只是爲了簡單起見而這樣。它正在使用一個ArrayList。 – 2010-03-30 00:29:11

回答

1

您可以

File folder = new File("myfolder"); 

if (folder.isDirectory()) 
{ 
    // you can get all the names 
    String[] fileNames = folder.list(); 

    // you can get directly files objects 
    File[] files = folder.listFiles(); 
} 
+0

這是我看到的第一種方法,它完美地滿足了我所需要的。我沒有意識到File類中的isDirectory方法。我想它適合不正確地查看API。無論如何,謝謝你的例子。 – 2010-03-30 00:30:33

0

嘗試查看java的文件API,特別是list()功能。

File my_dir = new File("DirectoryName"); 
assert(my_dir.exists()); // the directory exists 
assert(my_dir.isDirectory()); // and is actually a directory 

String[] filenames_in_dir = my_dir.list(); 

現在filenames_in_dir是所有的文件名,這幾乎正是你想要的東西的數組。

如果你想剝離各個文件名的擴展名,這是基本的字符串處理 - 遍歷文件名並照顧每一個。

2
File dir = new File("/some/path/name"); 
List<String> list = new ArrayList<String>(); 
if (dir.isDirectory()) { 
    String[] files = dir.list(); 
    Pattern p = Pattern.compile("^(.*?)\\.txt$"); 
    for (String file : files) { 
    Matcher m = p.matcher(file); 
    if (m.matches()) { 
     list.add(m.group(1)); 
    } 
    } 
} 
+0

非常感謝你的和每一個elses快速回應..它非常感謝!當我回家時,我會研究這些答案。謝謝:) – 2010-03-28 14:57:02

7

這是一個使用java.io.File.list(FilenameFilter)的解決方案。它保留了.txt後綴;如果你真的需要的話,你可以很容易地去除它們。

File dir = new File("."); 
List<String> list = Arrays.asList(dir.list(
    new FilenameFilter() { 
     @Override public boolean accept(File dir, String name) { 
     return name.endsWith(".txt"); 
     } 
    } 
)); 
System.out.println(list); 
0

這裏是我的回答,我用這個之前親自把所有的文件名,
在一個loadsave功能在我的遊戲之一來使用。

public void getFiles(String path){ 
      //Put filenames in arraylist<string> 
     File dir = new File(path); 
     ArrayList<String> filenames = new ArrayList<String>(); 
     for(File file : dir.listFiles()){ 
      savefiles.add(file.getName()); 
     } 
      //Check if the files are in the arraylist 
     for (int i = 0; i < savefiles.size(); i++){ 
      String s = savefiles.get(i); 
      System.out.println("File "+i+" : "+s); 
     } 
     System.out.println("\n"); 
    } 


我希望可以一​​直使用到您爲C: - 擁抱玫瑰

相關問題