【发布时间】:2020-02-11 08:31:11
【问题描述】:
我试图在我的存储中创建一些文件夹并将相机中的图像存储到其中,但 mkdirs 总是返回 false,已经尝试使用 mkdir 和 canWrite,但仍然相同
2020-02-12 09:32:44.043 22914-23146/example.com.absensiapp D/TET: Folder Not Exist
2020-02-12 09:32:44.047 22914-23146/example.com.absensiapp D/TET: Failed To Create Directory
这是制作文件夹并保存相机图像的代码
String wholeFolderPath = fh.TRAINING_PATH + name;
File dir = new File(wholeFolderPath);
if(!dir.exists()) {
Log.d("TET", "Folder Not Exist");
//create new directory
if(dir.mkdirs())
fh.saveMatToImage(m, wholeFolderPath + "/");
else
Log.d("TET", "Failed To Create Directory");
}
else {
Log.d("TET", "Folder Exist");
//save the image to directory
fh.saveMatToImage(m, wholeFolderPath + "/");
}
已将权限放入我的清单和主要活动中
清单:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
主要活动:
private static boolean hasPermissions(Context context, String... permissions) {
if (context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
private void checkPermission() {
int PERMISSION_ALL = 1;
String[] PERMISSIONS = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA
};
if (!hasPermissions(this, PERMISSIONS)) {
ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
}
}
【问题讨论】:
-
我没有看到任何
mkdir()方法,而是有canWrite() -
@SkypeDogg 抱歉,忘记编辑了。尝试使用 canWrite(),但仍然返回 false
-
mkdirs()创建包含所有父目录的完整路径。如果你只想创建这个目录,试试mkdir() -
目录是否已经存在?
-
如果文件夹还不存在,您应该只调用 mkdir 或 mkdirs。如果文件夹已经存在 mkdir 并且 mkdirs 将返回 false。此外,您仅在一次检查返回值。