Java Android将位图写入SD卡
我正试图在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() +
/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(没有这样的文件或目录)fromcatch(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的回答和评论对我帮助最大。