Android内部存储读取文件

时间:2012-03-22 23:16:36

标签: java android fileinputstream

我的Android内部存储存在问题。我在包根文件夹中创建了文件夹,调用getDir()MODE_WORLD_WRITEABLE,因为我希望相机应用程序在此文件夹中写入捕获的图像。无论如何,我可以看到捕获的图像在DDMS的文件夹内。 问题是我无法读取该文件。

我尝试使用以下代码读取文件:

File file = context.getDir("images", Context.MODE_WORLD_READABLE);
File image = new File(file, "image.jpeg");
if (image.canRead()) 
    Log.w("read", "can read");
else
    Log.w("read", "can't read");

在LogCat中只有第二条消息(无法读取)。

我还尝试使用文件名创建FileInputStream,但收到FileNotFoundException

有人可以告诉我这里我做错了吗?

提前致谢

修改

读取文件是正确的,但唯一的问题是当cam应用程序将图像保存到指定位置时,cam应用程序设置为图像文件的权限为-rwxrwx---.使用

更改权限后
adb (chmod 777 image.jpeg) 

我能够阅读图像。有趣的是,cam应用程序正在使用sdcard将图像文件写入----rwxr-x

有没有办法在运行时更改文件权限?

2 个答案:

答案 0 :(得分:1)

为什么不将它放在默认的照片目录中?

File path = Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES);
File file = new File(path, "DemoPicture.jpg");

(来自:http://developer.android.com/reference/android/os/Environment.html

另请参阅调用相机应用的更完整示例:http://developer.android.com/training/camera/photobasics.html

答案 1 :(得分:0)

引用Android developers您应该使用openFileOutput()openFileInput()来处理内部存储...您不允许/不能在那里制作dirs。 Android会自行完成..当您的应用程序被删除时,这些数据将被清除。