这是我正在运行的代码:
File root = android.os.Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File dir = new File(root.getAbsolutePath());
dir.mkdirs();
File file = new File(dir, "myData.txt");
try {
FileOutputStream f = new FileOutputStream(file);
PrintWriter pw = new PrintWriter(f);
pw.println("Hi , How are you");
pw.println("Hello");
pw.flush();
pw.close();
f.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
android.util.Log
.i("tag",
"******* File not found. Did you add a WRITE_EXTERNAL_STORAGE permission to the manifest?");
} catch (IOException e) {
e.printStackTrace();
}
代码执行没有问题,如果我运行这些测试,都表明文件系统上存在该文件:
File testFile = new File(dir, "myData.txt");
Boolean exists = testFile.exists();//true
Boolean hidden = testFile.isHidden();//false
String[] files = dir.list();//list contains the file
但是我在文件资源管理器或根浏览器或终端模拟器中看不到该文件。并且查询的文件列表与dir.list()
我在根浏览器中看到的不同/mnt/sdcard/Downloads
。myData.txt
我尝试在终端模拟器中搜索该文件find / -name *myData*
,但没有结果。
我在有根的 s4 上运行代码,AndroidManifest 包含 WRITE_EXTERNAL_STORAGE 权限。
为什么会发生这种情况?如何让用户在创建文件后查看文件?