在我的Android项目中,我将图像文件保存到设备中。在那里我使用以下代码创建文件。
File folder = new File(getFilesDir());
if (!folder.exists()) {
folder.mkdir();
}
File imageFile = new File(folder, filename);
try
{
FileOutputStream fos = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
}
catch (Exception e)
{
e.printStackTrace();
}
但是在创建FileOutputStream
时,这给了我找不到文件的异常FileOutputStream fos = new FileOutputStream(imageFile);
所以文件似乎没有创建。我该如何解决这个问题。
答案 0 :(得分:0)
我认为folder
未创建。如果folder
的路径类似于此/folder1/folder2
。您可以先尝试创建folder1
,然后创建folder2
吗?之后,再次运行代码。
答案 1 :(得分:0)
您需要显式创建如下文件:
File imageFile = new File(folder, filename);
if(!imageFile.exists()){
imageFile.createNewFile();
}
答案 2 :(得分:0)
问题是我使用运行Android 6.0的Android模拟器而我没有检查运行时权限。在API 23访问外部存储之前,我们需要运行时权限。我检查了权限如下。
public boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(getActivity(), android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
return true;
} else {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
return false;
}
}
else {
return true;
}
}
通过以下回调授予它的一次许可,以便我们可以执行我们的任务。
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
saveTempImage(bmp, filename);
}
}
感谢所有人的帮助!