Android文件没有创建

时间:2017-09-12 09:55:38

标签: android file

在我的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);

所以文件似乎没有创建。我该如何解决这个问题。

3 个答案:

答案 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);
        }
    }

感谢所有人的帮助!