任何应用都可以在外部存储中创建文件夹。 该文件夹可以放置在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”?
答案 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()