Java 为什么File.listFiles()方法只能列出目录

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

我在Android R上遇到了一个非常棘手的问题。下面是我所做的

  • 声明我将在Manifest.xml中使用WRITE_EXTERNAL_存储和READ_EXTERNAL_存储权限
  • 但在“电子书”文件夹中,实际上有40个项目。39个PDF文档和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();
    
            }