Android 10及更高版本,.listFiles()返回值为null的问题

 示例代码:

// 示例代码
String dir = "/storage/emulated/0";
File f = new File(dir);
Log.v("Files",f.exists()+"");
Log.v("Files",f.isDirectory()+"");
Log.v("Files",f.listFiles()+"");

// 返回结果:
true
true
null

 第一步:检查文件AndroidManifest.xml,权限配置

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

第二步: APP动态申请读取文件权限

第三步:Android 10及更高版本,配置暂时停用分区存储。

<application android:requestLegacyExternalStorage="true"
`file.listFiles()` 方法在 Android 中用于列出文件系统目录中的所有文件和子目录。如果无法列出 `.shp` 和 `.dbf` 文件,可能有以下几种原因: 1. 文件或目录的权限问题:如果当前应用程序没有足够的权限去访问这些文件所在的目录,`listFiles()` 方法可能无法列出这些文件。确保应用有读取存储的权限。 2. 文件被隐藏或特殊文件:某些文件系统中,特定后缀的文件可能被设置为隐藏,或者有特殊属性,使得它们不会被常规的文件列表方法所发现。可以尝试使用底层的文件操作API来确定文件是否确实存在。 3. 文件格式不被支持:如果文件是通过特殊方式创建的,或者文件系统不支持这些文件格式,那么可能会导致 `listFiles()` 方法无法识别。不过对于 `.shp` 和 `.dbf` 这样的通用文件格式,这种情况较为少见。 4. `listFiles()` 方法的使用方式:如果传入的参数不正确,或者文件列表方法在特定环境下表现异常,也可能导致文件无法列出。检查调用 `listFiles()` 方法的代码确保参数正确。 确保应用具有读取存储的权限,可以参考以下代码示例: ```java if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); } ``` 同时,如果需要查找特定扩展名的文件,可以使用以下代码: ```java File directory = new File(path); // path 是你的文件路径 File[] files = directory.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".shp") || name.endsWith(".dbf"); } }); if (files != null) { for (File file : files) { // 处理文件 } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值