2010-03-28 2 views
4

Мне в настоящее время нужно загрузить содержимое имен файлов папок в arraylist у меня есть, но я не уверен, как это сделать.Добавление имен файлов в список массивов в java

Чтобы представить его в перспективе, у меня есть папка с файлами One.txt, Two.txt, Three.txt и т. Д. Я хочу, чтобы загрузить этот список в arraylist, чтобы, если бы я должен проверить arraylist его содержимое будет:

ArrayList [0] = Один

ArrayList [1] = Два

ArrayList [3] = Три

Если кто-нибудь может дать мне представление этого было бы гораздо оценили.

+0

Оказывается, у вас есть массив, который отличается, чем ArrayList, найденного в API коллекций. –

+0

Я, должно быть, только что описал это плохо, я просто показал это так для простоты. Он использует ArrayList. –

ответ

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

Это первый подход, на который я смотрел, и он отлично работал для того, что мне нужно. Я не знал об этом методе isDirectory в классе File. Я полагаю, это мне помогает правильно не смотреть в API. В любом случае, спасибо за пример. –

0

Смотрите Jave 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 быстрые ответы .. Его высоко ценится! Когда я вернусь домой, я рассмотрю эти ответы. Спасибо :) –

0

Посмотрите на java.io.File, это дает вам весь контроль, который вам может понадобиться. Вот URL-адрес для этого http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html

+1

Спасибо за ссылку = -) немного посмотрел. Я действительно должен был посмотреть на это, прежде чем спрашивать:/my bad –

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: - Объятия роза

Смежные вопросы