Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android将位图写入SD卡_Java_Android_Bitmap_Sd Card - Fatal编程技术网

Java Android将位图写入SD卡

Java Android将位图写入SD卡,java,android,bitmap,sd-card,Java,Android,Bitmap,Sd Card,我正试图在android上向SD卡写入位图,结果收到错误消息 /mnt/sdcard/physicsketchpad/sketchpad145.png(没有这样的文件或目录)。 我在清单中声明了android.permission.WRITE_EXTERNAL_STORAGE权限,这是我的代码: String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() +

我正试图在android上向SD卡写入位图,结果收到错误消息
/mnt/sdcard/physicsketchpad/sketchpad145.png(没有这样的文件或目录)。

我在清单中声明了
android.permission.WRITE_EXTERNAL_STORAGE
权限,这是我的代码:

String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + 
                        "/PhysicsSketchpad/";
File dir = new File(file_path);
dir.mkdirs();
File file = new File(dir, "sketchpad" + pad.t_id + ".png");
FileOutputStream fOut = new FileOutputStream(file);

bmp.compress(Bitmap.CompressFormat.PNG, 85, fOut);
fOut.flush();
fOut.close();
发生什么事了

更新

似乎当我尝试写入现有目录时,会出现权限被拒绝的错误,

08-11 09:55:23.796: WARN/Physics Sketchpad(8881): Error when saving: IOException /mnt/sdcard/download/sketchpad54.png (Permission denied)
当我试图保存到一个新目录时,我得到一个没有这样的文件或目录错误,
08-11 09:59:20.175:WARN/Physics Sketchpad(9040):保存时出错:IOException/mnt/sdcard/Physics Sketchpad/Sketchpad 55.png(没有这样的文件或目录)

此外,
File.mkdirs()
根据是否成功返回一个布尔值,并返回false。

尝试此代码

  String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + 
                            "/PhysicsSketchpad";
    File dir = new File(file_path);
if(!dir.exists)
    dir.mkdirs();
    File file = new File(dir, "sketchpad" + pad.t_id + ".png");
    FileOutputStream fOut = new FileOutputStream(file);

    bmp.compress(Bitmap.CompressFormat.PNG, 85, fOut);
    fOut.flush();
    fOut.close();

获取绝对路径检查获取路径的错误

/mnt/sdcard/AppName/appname145.png
你设定了

Environment.getExternalStorageDirectory().getAbsolutePath() + 
                        "/PhysicsSketchpad/";
其中作为“PhysicsSketchpad”目录未进入上述路径

试试这个

Environment.getExternalStorageDirectory().toString()+ "/PhysicsSketchpad/";

试试这个代码。这对我很有效

public void saveBitmap(Bitmap bm)
{
    try
    {
        String mBaseFolderPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera/";
        String mFilePath = mBaseFolderPath + "abcd.jpg";

        FileOutputStream stream = new FileOutputStream(mFilePath);
        bm.compress(CompressFormat.JPEG, 100, stream);
        stream.flush();
        stream.close();
    }
    catch(Exception e)
    {
        Log.e("Could not save", e.toString());
    }
}

Shash

我试图在代码中编辑掉我的程序名,使其更通用,但我忘了更改一半。我把它编辑回来了。你能分享logcat消息吗?/mnt/sdcard/physicsketchpad文件夹存在吗?很抱歉,关于上面的帖子,您的代码中出现了另一个错误。在IOException捕获中,我写到:
Log.w(“物理画板”,“保存时出错:IOException”+e.getLocalizedMessage()),给出的logcat消息为08-11 00:27:04.326:WARN/Physics Sketchpad(12994):保存时出错:IOException/mnt/sdcard/DCIM/Camera/sketchpad152.jpg(权限被拒绝)。使用另一个代码,我得到了错误消息08-11 00:29:30.116:WARN/Physics Sketchpad(13140):保存时出错:IOException/mnt/sdcard/Physics Sketchpad/sketchpad153.png(没有这样的文件或目录)您的SD卡有DCIM/Camera目录吗?您正在尝试使用模拟器或设备吗?如果是设备,您插入了SD卡了吗?如果是模拟器,您添加了SD卡了吗?08-11 00:29:30.116:WARN/Physics Sketchpad(13140):保存时出错:IOException/mnt/sdcard/Physics Sketchpad/Sketchpad 153.png(没有这样的文件或目录)from
catch(IOException e){Log.w(“Physics Sketchpad”,“保存时出错:IOException”+e.getLocalizedMessage();}
@Sudar我在两者上都试过了,两者都有SD卡。但是模拟器给了我一个拒绝访问的错误,08-11 07:55:38.418:WARN/physical Sketchpad(284):保存时出错:IOException/mnt/sdcard/physicsketchpad/sketchpad1.png(拒绝权限)我可以在androidmanifest.xml中没有以下行的情况下重新创建相同的错误消息:,请检查里面是否有这一行?试试这个,File dir=new File(android.os.Environment.getExternalStorageDirectory(),“myDir1”);dir.getCacheDir();if(!dir.exists()){dir.mkdirs();}File=new File(dir,“sketchpad”+pad.t_id+“.png”);我发现了问题!我的“使用”权限标记位于我的“应用程序”标记中。虽然它不能直接解决我的问题,但Ilango的回答和评论对我帮助最大。