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