为什么我不能使用getExternalStoragePublicDirectory()在SD卡上创建一个文件夹并将照片存储在其中?

时间:2018-07-12 14:35:02

标签: java android android-bitmap

当我尝试使用getExternalStoragePublicDirectory()获取文件地址时,出现FileNotFoundException @ 5818。

这是我从Google Dev Documentation复制的方法:

public File getPublicDir(String albumName) {
// Get the directory for the user's public pictures directory.
File file = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES), albumName);
if (!file.mkdirs()) {
    Log.e("PUBLIC DIRECTORY", "Directory not created");
}
return file;
}

我在这里调用此方法:

try{
 FileOutputStream fos=new FileOutputStream(getPublicDir("mySnapshot"));
 Boolean success=snapshot.compress(Bitmap.CompressFormat.PNG, 100, fos);
 Toast.makeText(MainActivity.this,"Compress? 
  :"+success,Toast.LENGTH_SHORT).show();
 fos.close();
}catch(IOException e){
 e.printStackTrace();
 Toast.makeText(MainActivity.this,"NOT SAVED",Toast.LENGTH_SHORT).show();
}

我不确定确切的专辑名称是什么。是要创建的文件夹的名称还是要存储的照片文件的名称?

这是我调试时抛出的错误的屏幕截图:

enter image description here

它在“ FileOutputStream fos = new FileOutputStream(getPublicDir(“ mySnapshot”));;”行引发错误。

添加了写权限。

这是我的应用(GIF)的样子,并引发了错误:

enter image description here

这是我创建文件夹(GIF)的位置:\

enter image description here

我发现here是一种将文本写入目录的方法,它可以工作,但仅适用于文本:

try {
                FileOutputStream fos = new FileOutputStream(myExternalFile);
                fos.write(inputText.getText().toString().getBytes());
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

myExternalFile = new File(getExternalFilesDir(filepath), filename);
private String filename = "SampleFile.txt";
private String filepath = "MyFileStorage";

0 个答案:

没有答案