2013-04-10 79 views
2

我想查看我在外部存儲器中擁有的所有文件,我有這個向用戶顯示文本的庫,但是當我使用它來顯示子文件文件,它說這樣的:
(Ljava.File;@
我如何得到它顯示實際文件的名稱給用戶?另外,如何將特定文件夾的名稱顯示給用戶?說文件#3?查看外部存儲器中的文件列表

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

當然,它顯示「Ljava.File; @」,您在文件數組上調用toString。 UIHelper是你自己的一類嗎? – Blackbelt 2013-04-10 07:34:56

+0

如何顯示我猜測的數組? – 2013-04-10 16:11:47

回答

5

Checl如果SD卡安裝與否。

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

獲取SD卡的

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 2015-05-30 19:43:20

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()); 
     } 

唐文件和文件夾的打印一覽代碼別忘了讓我下面的許可n you android Manifest

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
相關問題