Прочитайте несколько текстовых файлов и разберитесь с ними на Android - PullRequest
0 голосов
/ 27 февраля 2012

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

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

Я хочу что-то вроде этого:

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, но он не может найти его таким образом, если я это сделаюв жестком коде он его находит.

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

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

Ответы [ 3 ]

1 голос
/ 27 февраля 2012

Я думаю, ваш код не будет работать и в Java: ваша переменная save содержит путь к папке Save в папке de root.Чтобы получить отфильтрованный список каталогов, вы можете попробовать использовать метод list () в объекте File для папки Save, передав пользовательскую реализацию 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 голосов
/ 27 февраля 2012

Используйте 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);
    }
0 голосов
/ 27 февраля 2012

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

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

for (File f : save.listFiles()) {
    // check each file
    if (f.getName().startWith("3_test.txt") {
        // whatever
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...