我试图创建一个目录并将文件保存到目录中,我的程序返回该目录已创建,但我找不到使用USB端口从PC浏览的目录,或者使用ES文件浏览器。每次运行程序时程序也返回true(创建目录),如果它确实创建了它,它应该只在第一次返回true。另外,当我尝试在目录中创建一个文件时,它返回该文件不存在。在清单中,我正在为写入外部和内部存储设置用户权限。 请告诉我我做错了什么,为什么我的程序实际上没有创建文件夹(或文件)(注意tager文件夹路径是存储/模拟/ 0 / Documents / Saved_Receipts),我认为最终会/我的文件/ Saved_Receipts)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
boolean success = false;
String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).toString();
File myDir = new File(root + "/Saved_Receipts");
if (!myDir.exists()) {
success = myDir.mkdir();
textIncoming.append("creating folder");
}
if (success) {
textIncoming.append("created folder");
} else {
textIncoming.append("folder existed");
}
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "DRcpt_.xml";
File file = new File (myDir, fname);
if (file.exists ()) {
textIncoming.append("file exists");
}
else{
textIncoming.append("file does not exist");
}
答案 0 :(得分:0)
您可能正在使用SDK(API)23或更高版本。如果是这种情况,则在清单中声明权限已经不够了。
您应该可以通过在代码中添加以下块来解决该问题:
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
}
else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
}
请参阅: