如何查找具有特定名称的目录

时间:2018-12-06 08:24:55

标签: android

任何应用都可以在外部存储中创建文件夹。 该文件夹可以放置在SD卡或手机内部存储器中。 如果使用此代码,则可以获取所有外部存储的列表。

File file2[] = getExternalFilesDirs(null);

返回: /storage/emulated/0/Android/data/com.snailp4el.android.tatoeba/files /storage/8639-0FFD/Android/data/com.snailp4el.android.tatoeba/files 但是,如果我尝试获取其路径列表:

File f = new File("/storage/8639-0FFD/Android/data/com.snailp4el.android.tatoeba/files");
File[] files = f.listFiles();

我什么也没得到。 在这种情况下:

File f = new File("/storage/");
File[] files = f.listFiles();

我得到:

/storage/8639-0FFD
/storage/emulated
/storage/self

没关系。我终于在手机中得到了所有存储空间。 问题是: 如何扫描子文件夹以按名称查找特定文件夹? 我的方法是对的。我的意思是扫描“ /存储”? 如果是的话,它将适用于所有版本吗? 最后是什么“ / storage / self”?

1 个答案:

答案 0 :(得分:0)

我这样解决了。 可能不是最好的解决方案,但对我来说很好。

public ArrayList getExternalFolderPath(String folderName){

ArrayList<String> arrayList = new ArrayList<>();

//get all storages in phone
File externalStorages[] = getExternalFilesDirs(null);

for (File es: externalStorages){
    String exF = es.toString();

    //cut out what don't need
    exF = exF.split("/Android/data")[0];

    File file = new File(exF);
    File[] files = file.listFiles();
    for (File f: files){
        Log.i(TAG, "getAnkiExternalFolder()" + f.toString());
        //add in array the path
        if(f.toString().contains(folderName)){
            arrayList.add(f.toString());
        }
    }
}
return arrayList;
}

您可以从两个存储中获得两个目录。您需要最后更改的目录。

file.lastModified()