我花了几个小时试图弄清楚这一点。我正在尝试编写一个下载到我的内部 android 文件夹的图像。唯一的问题是我需要将不同的图像存储在应用程序数据文件夹的子目录中,因为它们连接到与文件夹名称具有相同 ID 的对象。我从文档中了解到 FileOutputStream 不允许输出到子目录,而只能输出到“根”应用程序数据文件夹。有解决方法吗?这是我的代码:
public static void writeImageToInternal(byte[] inImg, String FolderName, Context ctx) {
File file = new File(ctx.getFilesDir().getAbsolutePath() + "/img/" + FolderName);
if (!file.exists())
file.mkdirs();
int Name= 0;
// TODO: Find Available Name
File mypath = new File(file, FolderName + Name + ".png");
FileOutputStream fOut = null;
try {
// mypath.createNewFile();
fOut = new FileOutputStream(mypath);
BitmapFactory.decodeByteArray(inImg, 0, inImg.length).compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
} catch (Exception e) {
e.printStackTrace();
}
}
如上所述,这样做的原因是,当从数据库加载对象时,应用程序会搜索名为对象 id 的文件夹并返回该文件夹中的所有图像。有什么办法可以让它工作吗?
其次,由于我将不同的图像连接到特定的对象,将我的图像作为 BLOBS 保存在数据库中会更好吗?我的应用程序上也已经有一个数据库,但我不能使用同一个数据库,因为数据数据库已备份在服务器上,我不希望将图像复制到其中。它们涉及许多图像文件,因此如果数据库实现更好,是否可以将数据库保存到外部存储?提前致谢!