2013-04-10 3 views
2

Я хотел видеть все файлы, которые у меня есть в моем внешнем хранилище, у меня есть эта библиотека, которая отображает текст для пользователя, но когда я использую его для отображения субпользователя файлы, он говорит что-то вроде:
(Ljava.File;@
Как мне получить его, чтобы показать имя фактических файлов пользователю? Кроме того, как я могу показать имя для определенной папки для пользователя? скажем, файл №3?Посмотрите список файлов во внешнем хранилище

File[] files = myDir.listFiles(); 
UIHelper.displayText(this, R.id.textView1, files.toString()); 
+0

Конечно, он показывает «Ljava.File; @», вы вызываете toString в массив файлов. Является ли UIHelper классом? – Blackbelt

+0

Как вы представляете массив, который я предполагаю? –

ответ

5

Checl если SDCard установлен или нет.

if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) 
{ 
     ///mounted 
} 

Получить путь сд карты

File dir= new File(android.os.Environment.getExternalStorageDirectory()); 

Затем вызовите

walkdir(dir); 

ArrayList<String> filepath= new ArrayList<String>();//contains list of all files ending with 

public void walkdir(File dir) { 
File listFile[] = dir.listFiles(); 

if (listFile != null) { 
for (int i = 0; i < listFile.length; i++) { 

if (listFile[i].isDirectory()) {// if its a directory need to get the files under that directory 
    walkdir(listFile[i]); 
} else {// add path of files to your arraylist for later use 

    //Do what ever u want 
    filepath.add(listFile[i].getAbsolutePath()); 

} 
} 
}  
} 
1

Вы можете использовать рекурсивный метод для проверки всей вашей карты SD:

String sdCardState = Environment.getExternalStorageState(); 
if(!sdCardState.equals(Environment.MEDIA_MOUNTED)) { 
    //displayMessage("No SD Card."); 
    return; 
} else { 
    File root = Environment.getExternalStorageDirectory(); 
    lookForFilesAndDirectories(root); 
} 

// lookForFilesAndDirectories() method: 

public void lookForFilesAndDirectories(File file) { 
    if(file.isDirectory()) { 
     String[] filesAndDirectories = dir.list(); 
     for(String fileOrDirectory : filesAndDirectories) { 
      File f = new File(dir.getAbsolutePath() + "/" + fileOrDirectory); 
      lookForFilesAndDirectories(f); 
     } 
    } else { 
     doSomethingWithFile(f); 
    } 
} 
+1

Мне нравится этот рекурсивный метод. Две незначительные ошибки для исправления в коде - dir должны быть файлами – Mick

1

Это код для списка печати файлов и папок из ExternalStorage

String path = Environment.getExternalStorageDirectory().getAbsolutePath(); 

     Log.d("Files", "Path: " + path); 
     File f = new File(path);   
     File file[] = f.listFiles(); 
     Log.d("Files", "Size: "+ file.length); 
     for (int i=0; i < file.length; i++) 
     { 
      Log.d("Files", "FileName:" + file[i].getName()); 
     } 

Дон Не забудьте поставить ниже разрешения i n you android Manifest

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