[英]Android writing bitmap to sdcard
我正在嘗試將 bitmap 寫入 android 上的 SD 卡,我收到錯誤消息/mnt/sdcard/PhysicsSketchpad/sketchpad145.png (No such file or directory).
我在清單中聲明了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): Error when saving: IOException /mnt/sdcard/PhysicsSketchpad/sketchpad55.png (No such file or directory)
此外, File.mkdirs()
根據是否成功返回 boolean,返回 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();
試試這個代碼。 這對我有用。
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());
}
}
沙什
你得到絕對路徑檢查錯誤你得到什么路徑
/mnt/sdcard/AppName/appname145.png
你設置
Environment.getExternalStorageDirectory().getAbsolutePath() +
"/PhysicsSketchpad/";
其中“PhysicsSketchpad”目錄沒有進入上述路徑
嘗試這個
Environment.getExternalStorageDirectory().toString()+ "/PhysicsSketchpad/";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.