2010-03-28 87 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: - 拥抱玫瑰