我的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
。
有没有办法在运行时更改文件权限?
答案 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会自行完成..当您的应用程序被删除时,这些数据将被清除。