我有一个Android应用程序,我有一个位图,我想将它保存到应用程序数据文件夹。该文件在执行后存在,但其0kb且没有图片在里面。
错误在哪里?
这是我的代码:
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
myBitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
File f = new File(projDir + File.separator + newPath);
try {
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
fo.close();
} catch (IOException e) {
e.printStackTrace();
}
答案 0 :(得分:2)
添加fo.flush()
try {
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
fo.flush()
fo.close();
} catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:0)
尝试添加fo.flush()
try {
f.createNewFile();
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
fo.flush()
fo.close();
} catch (IOException e) {
e.printStackTrace();
}
修改强>
试试这个:
File f = new File(projDir + File.separator + newPath);
FileOutputStream out = new FileOutputStream(f);
myBitmap.compress(Bitmap.CompressFormat.JPEG, 40, out);
out.flush();
out.close();
答案 2 :(得分:0)
使用FileOutputStream尝试:
try {
FileOutputStream fos= new FileOutputStream(projDir + File.separator + newPath);
myBitmap.compress(Bitmap.CompressFormat.JPEG, 40, fos);
} catch (Exception e) {
}
答案 3 :(得分:0)
无需调用createNewFile()
,如果它不存在,将自动创建。我想因为你永远不会删除它已经存在并且因为它而没有被创建。
同样作为一个好习惯,你应该将清理相关代码放在finally
块中。这样,如果在某处发生某些错误,文件将最终关闭。
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
boolean success = myBitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
if(!success) {
Log.w("myApp", "cannot compress image");
}
String patg = projDir + File.separator + newPath
File f = new File(projDir + File.separator + newPath);
Log.w("myApp", "cannot compress image");
try {
FileOutputStream fo = new FileOutputStream(f);
fo.write(bytes.toByteArray());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(fo != null) {
fo.flush();
fo.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}