Android 新文件().exists()对于现有文件返回false

Android 新文件().exists()对于现有文件返回false,android,rooted-device,Android,Rooted Device,我正试图在我的根设备中读取/data/misc/wifi/wpa_supplicant.conf 此文件可用,我可以毫无问题地将其复制到SD卡,但new file().exists()返回false new File("/data/misc/wifi/wpa_supplicant.conf").exists() -> FALSE 下面的代码可以正常工作 new ProcessBuilder(new String[]{"su", "-c", "cp /data/misc/wifi/wpa_

我正试图在我的根设备中读取/data/misc/wifi/wpa_supplicant.conf 此文件可用,我可以毫无问题地将其复制到SD卡,但new file().exists()返回false

new File("/data/misc/wifi/wpa_supplicant.conf").exists() -> FALSE
下面的代码可以正常工作

new ProcessBuilder(new String[]{"su", "-c", "cp /data/misc/wifi/wpa_supplicant.conf " + Environment.getExternalStorageDirectory().getAbsolutePath() + "/wpa_supplicant.conf"}).start().waitFor();

由于文件系统的安全性,它无法工作。除非重新安装分区,否则您无权在此目录中读取或写入。检查此问题:


一种解决方案是不使用file.exist(),而是在WPA_-supplicant目录中执行命令“ls”,并检查处理结果是否包含WPA_-supplicant

首先尝试初始化它,并使用
if
语句检查其状态:

File file = new File("my_path");
if (file.exist()){
    // do something
}

并确保文件路径正确。

对于我来说,找出发生这种情况的原因以及.exist()不起作用的原因非常重要。由于文件系统的安全性,它不起作用。除非重新安装分区,否则您无权在此目录中读取或写入。检查此问题:我提出的建议解决方案是一个易于构建的解决方案,在您的情况下可以完美工作。如果它为您提供了一些帮助,请接受答案确保您有权阅读运行此代码的流程。例如,尝试文件#canRead。