【发布时间】:2012-03-22 23:16:35
【问题描述】:
我遇到了 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 应用程序正在使用----rwxr-x 将图像文件写入sdcard。
有没有办法在运行时更改文件权限?
【问题讨论】:
-
您确定文件在包根目录中,而不是在
files子目录中吗?将文件放在包根目录中的情况很少见。 -
在包根目录中是文件夹 images 并且在该文件夹中我有文件。如果设备没有外部存储,我正在使用内部存储。我不知道如何使用 MODE_WORLD_WRITEABLE 在 files 中创建文件夹,以便 cam 应用程序可以写入捕获的图像。
标签: java android fileinputstream