2012-02-27 5 views
0

У меня есть небольшая проблема. У меня есть карта (на Android-телефоне) под названием «Сохранить», в этой папке у меня появилось несколько TXT-файлов.Прочтите несколько файлов txt и отсортируйте их. Android

Я знаю, как войти в папку, и я могу прочитать 1 txt-файл (hardcoded), но я хочу, чтобы он был динамическим.

Я хочу somehting как это:

public void onClick(View v) { 

      File root = Environment.getExternalStorageDirectory(); 

      save = root.toString()+"/Save/"; 

       if (save.startsWith("3_test")){ 
        System.out.println("FOUND!"); 
       } else { 
        System.out.println("NOT FOUND!"); 
       } 

     } 

Я получил текстовый файл с именем 3_test.txt, но он не может найти это так, если я делаю это жёстко это найти его.

Проблема в том, что я не знаю, как «сканировать» все файлы в папке «Сохранить», а затем поставить «if» на нее.

Надеюсь, кто-то может мне помочь.

ответ

1

Я думаю, что ваш код не будет работать в Java либо: ваша save переменной contais пути к папке Save, при де root папки. Чтобы получить отфильтрованный список каталогов, вы можете попробовать использовать метод list() в объекте File для папки «Сохранить», передав пользовательскую реализацию java.io.FilenameFilter, чтобы она просматривала весь контент целевой папки и возвращала только имена файлы, которые соответствуют вашему ограничению:

public void onClick(View v) { 

     File root = Environment.getExternalStorageDirectory(); 
     File saveFolder= new File(root, "Save"); 

     String[] files=saveFolder.list(
      new FilenameFilter() { 
       public boolean accept(File dir, String name) { 
       //define here you filter condition for every single file 
        return name.startsWith("3_test"); 

       } 
      }); 

     if(files.length>0) { 
      System.out.println("FOUND!"); 
     } else { 
      System.out.println("NOT FOUND!"); 
     } 
    } 
0

Сделать saveFile, а не тупой String, то вы можете позвонить listFiles() на нем, который возвращает массив File с в каталоге. Затем вы можете перебирать массив.

File save = new File(root, "Save"); 

for (File f : save.listFiles()) { 
    // check each file 
    if (f.getName().startWith("3_test.txt") { 
     // whatever 
    } 
} 
0

используйте listFiles(), чтобы получить все дочерние файлы любого каталога и использовать file.getName(), чтобы получить имя файла.

Пример

String folderName = Environment.getExternalStorageDirectory().getAbsolutePath(); 
    String folderNameStr = "Save"; 
    File destDir = new File(folderName+"/"+folderNameStr); 
    File[] childFiles =destDir.listFiles(); 
    String childFileName = null; 
    for(File child: childFiles){ 
     childFileName = child.getName(); 
     if(!childFileName.equals("3_test")){ 
      // do your task 
     } 
     System.out.println(childFileName); 
    } 
Смежные вопросы