保存文件:
FileOutputStream fo = null;
try {
fo = this.openFileOutput("test.png", Context.MODE_WORLD_READABLE);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
bitmap.compress(CompressFormat.PNG, 100, fo)
加载文件:
String fname = this.getFilesDir().getAbsolutePath()+"/test.png";
Bitmap bMap = BitmapFactory.decodeFile(fname);
i.setImageBitmap(bMap);
最后一行给出了空指针异常,为什么BitmapFactory.decodeFile返回null?我可以验证文件是否正确保存,因为我可以使用adb将其拉出来并看到png正确显示。
答案 0 :(得分:20)
如果NullPointerException
直接在此行:
i.setImageBitmap(BMAP);
然后您的问题是i
是null
。鉴于您正在调用setImageBitmap(),我猜测i
是ImageView
- 请确保您的findViewById()
来电正常。
此外,您应该使用以下内容获取fname
:
String fname = new File(getFilesDir(),“test.png”)。getAbsolutePath();
答案 1 :(得分:2)
在DecodeFile方法中使用options参数时,请确保 InJustDecodeBounds 属性设置为 false ,否则它将始终返回null。当您只想要解码文件但在应用程序/代码中不需要它时,可以将其设置为true。这样就不需要分配额外的内存。有关示例,请参阅here。