Java 为什么File.listFiles()方法只能列出目录
我在Android R上遇到了一个非常棘手的问题。下面是我所做的Java 为什么File.listFiles()方法只能列出目录,java,android,Java,Android,我在Android R上遇到了一个非常棘手的问题。下面是我所做的 声明我将在Manifest.xml中使用WRITE_EXTERNAL_存储和READ_EXTERNAL_存储权限 但在“电子书”文件夹中,实际上有40个项目。39个PDF文档和1个“临时”文件夹。所有PDF文档都丢失了。在任何类型的文件的其他目录中也发生了同样的事情 generic_x86_64_arm64:/sdcard/ebook $ ls 1.pdf
generic_x86_64_arm64:/sdcard/ebook $ ls
1.pdf dovado\ 4GR\ Reference_manua62X.pdf.pdf
111(1).pdf fit_diff_pages.pdf
2013\ Mar.pdf help.pdf
2017-08-03_SZ_NK.pdf interactiveform_enabled.pdf
223622-100518.pdf invoice\ 2013-1-28.pdf
59df269384986.pdf pass-111111.pdf
732101500002013-07-21_03-55-53-3352579.pdf pdf_commenting_new.pdf
Aeroplane\ -\ bjo.pdf pdfa_pagina_a4_gear_movie.pdf
BoardMeetingMinutes.1024.pdf signature.pdf
CreditCardReckoning201211.pdf temp
DEMO_SV_lowsize.pdf test.pdf
Geografie_\ Gr\ 10\ Portefeuljeboek\ -\ vnull.pdf test.pfx
Geografie_\ Gr\ 10\ Portefeuljeboek\ -\ vnull_unlocked.pdf test1.pdf
Layali_Ashar[1].pdf test28k.pdf
PDF\ markup\ design-Model.pdf test_att.pdf
Praise\ And\ Thanksgiving\ (Morning\ Has\ Broken).pdf visa-china.pdf
Professional_Android_2_Application_Development.pdf 为人父母.pdf
Welcome_to_Radaee_PDF_Master.pdf 张霁\ 简历\ 3\ -\ 副本.pdf
Xaml_Introduction.pdf 比亚迪.pdf
__ViewPoint\ 8000________________\ (2).pdf 美时每客CakeTime移动平台项目开发分析报告.pdf
这个问题只能在安卓Q上重现。代码非常简单,可以在其他安卓版本上正常工作。有人知道这里发生了什么吗?感谢您的帮助。Java File.listFiles()方法返回一个抽象路径名数组,表示该抽象路径名所表示的目录中的文件
如果目录为空,则数组将为空。如果此抽象路径名不表示目录,或者发生I/O错误,则返回null
但是你可以试试这样的
for (File file: files) {
try {
Log.i("file name" +file.getCanonicalPath()+"/n");
} catch (IOException e) {
e.printStackTrace();
}
它可能与权限有关-此方法存在异常 如果存在安全管理器,并且其SecurityManager#checkRead(String)方法拒绝对目录的读取访问
我也有类似的问题。重新启动设备解决了此问题。。真奇怪。。可能是安卓系统的错误我们看不到您试图列出的目录。请只列出一个目录并发布代码。不要发布图片,而是将日志行作为文本发布。为什么R as 30仍然可用?您可以删除所有权限代码。在Android 11上,listing/storage/emulated/0只提供目录是很正常的。在安卓10上,它会给出空值;接下来的问题是,你是如何在Android 11上将文件放入/storage/simulated/0/ebook的。我已经更新了帖子。请参考修改后的帖子。如有任何不清楚的信息,请随时询问。谢谢。我已经可以自由地问你为什么不使用sdk 30,但你甚至都不想回答。我问了更多的问题,你也没有回答。很抱歉,我在帖子中发现了一个拼写错误。这个问题是在Android Q上发现的,不是R。我使用sdk 29,因为这个问题发生在运行Android Q的设备上。对于将文件放入文件夹“/storage/emulated/0/ebook”,实际上我和应用程序都不会将文件放入该文件夹。但用户会。项目只读取用户放入文件夹中的文档。Hi Sideeg,循环仅输出一行,目录包含39个PDF文档和1个子文件夹。只列出了文件夹。请参考我修改过的帖子。谢谢你的回复。嗨,阿林,谢谢你的回复。但我想不是,我试图捕获SecurityException,但似乎在应用程序运行时没有抛出任何异常。
file name: /storage/emulated/0/ebook/temp
generic_x86_64_arm64:/sdcard/ebook $ ls
1.pdf dovado\ 4GR\ Reference_manua62X.pdf.pdf
111(1).pdf fit_diff_pages.pdf
2013\ Mar.pdf help.pdf
2017-08-03_SZ_NK.pdf interactiveform_enabled.pdf
223622-100518.pdf invoice\ 2013-1-28.pdf
59df269384986.pdf pass-111111.pdf
732101500002013-07-21_03-55-53-3352579.pdf pdf_commenting_new.pdf
Aeroplane\ -\ bjo.pdf pdfa_pagina_a4_gear_movie.pdf
BoardMeetingMinutes.1024.pdf signature.pdf
CreditCardReckoning201211.pdf temp
DEMO_SV_lowsize.pdf test.pdf
Geografie_\ Gr\ 10\ Portefeuljeboek\ -\ vnull.pdf test.pfx
Geografie_\ Gr\ 10\ Portefeuljeboek\ -\ vnull_unlocked.pdf test1.pdf
Layali_Ashar[1].pdf test28k.pdf
PDF\ markup\ design-Model.pdf test_att.pdf
Praise\ And\ Thanksgiving\ (Morning\ Has\ Broken).pdf visa-china.pdf
Professional_Android_2_Application_Development.pdf 为人父母.pdf
Welcome_to_Radaee_PDF_Master.pdf 张霁\ 简历\ 3\ -\ 副本.pdf
Xaml_Introduction.pdf 比亚迪.pdf
__ViewPoint\ 8000________________\ (2).pdf 美时每客CakeTime移动平台项目开发分析报告.pdf
for (File file: files) {
try {
Log.i("file name" +file.getCanonicalPath()+"/n");
} catch (IOException e) {
e.printStackTrace();
}