请参阅外部存储中的文件列表

时间:2013-04-10 07:31:22

标签: java android list storage external

我想查看外部存储器中的所有文件,我有这个库向用户显示文本,但是当我用它来显示子文件时,它表示如下:
(Ljava.File;@
如何让它向用户显示实际文件的名称?另外,如何向用户显示特定文件夹的名称?说文件#3?

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

3 个答案:

答案 0 :(得分:7)

检查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 :(得分: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);
    }
}

答案 2 :(得分: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());
        }

不要忘记在你的Android Manifest

中加入以下权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />