Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取下载文件夹中的文件名列表?_Android - Fatal编程技术网

Android 如何获取下载文件夹中的文件名列表?

Android 如何获取下载文件夹中的文件名列表?,android,Android,我试过这个: File f =Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); System.out.println(f.list()); System.out.println(f.listFiles().toString()); 但它显示为空。 我已授予在清单中读写的权限 <uses-permission android:name="andro

我试过这个:

File f =Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

        System.out.println(f.list());
        System.out.println(f.listFiles().toString());
但它显示为空。 我已授予在清单中读写的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

读取外部存储
危险的权限您需要请求它运行时权限

从Android 6.0(API级别23)开始,用户在应用程序运行时授予应用程序权限,而不是在安装应用程序时

你需要

也试试这个

试试这个

private void getfiles() {
    String[] filenames = new String[0];
    ArrayList<String> fileArrayList = new ArrayList<>();
    File path = new File(Environment.getExternalStorageDirectory() + "/folder_name");
    if (path.exists()) {
        filenames = path.list();
    }
    for (int i = 0; i < filenames.length; i++) {
        fileArrayList.add(path.getPath() + "/" + filenames[i]);
        Log.e("fileArrayList", fileArrayList.get(i));

    }
}
private void getfiles(){
字符串[]文件名=新字符串[0];
ArrayList fileArrayList=新的ArrayList();
文件路径=新文件(Environment.getExternalStorageDirectory()+“/folder_name”);
if(path.exists()){
filenames=path.list();
}
对于(int i=0;i
文件f=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u下载);
列表文件=getList(f);
私有列表getList(文件parentDir,字符串pathToParentDir){
ArrayList inFiles=新的ArrayList();
字符串[]文件名=parentDir.list();
for(字符串文件名:文件名){
如果(fileName.toLowerCase().endsWith(“.txt”)||
fileName.toLowerCase().endsWith(“.rtf”)||
fileName.toLowerCase().endsWith(“.doc”)||
fileName.toLowerCase().endsWith(“.txd”)){
添加(pathToParentDir+文件名);
}否则{
File File=新文件(parentDir.getPath()+“/”+文件名);
if(file.isDirectory()){
addAll(getList(文件,pathToParentDir+fileName+“/”);
}
}
}
返回填充;
}

谢谢您询问运行时权限,解决了我的问题。@user6731698很乐意帮助您
File f = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

List<String> files = getList(f);


private List<String> getList(File parentDir, String pathToParentDir) {
ArrayList<String> inFiles = new ArrayList<String>();
String[] fileNames = parentDir.list();

for (String fileName : fileNames) {
    if (fileName.toLowerCase().endsWith(".txt") || 
fileName.toLowerCase().endsWith(".rtf") || 
fileName.toLowerCase().endsWith(".doc") || 
fileName.toLowerCase().endsWith(".txd")) {
        inFiles.add(pathToParentDir + fileName);
    } else {
        File file = new File(parentDir.getPath() + "/" + fileName);
        if (file.isDirectory()) {
            inFiles.addAll(getList(file, pathToParentDir + fileName + "/"));
        }
    }
}

return inFiles;
}