Android |在哪里存储在 运行 时间从服务器获取的图像
Android | Where to store images fetched at run-time from server
我正在开发一个 Android 应用程序(类似于购物车),它倾向于获取(购物车目录项的)图像并将其存储在本地目录中供以后使用。 (由于网络连接受限,我无法在每次打开购物车时从服务器加载图片)
我找到了一种使用 Google 的毕加索库 (this link) 从服务器下载图像的方法。
卡住的地方是我不知道指定什么路径来存储图像。我打算为此专门创建一个目录,但不确定在哪里创建该路径(android 应用程序目录结构 post 安装?)。
我希望将它存储在我的应用程序的 res 目录中,但是一旦安装了应用程序,它会是一样的吗?
如果是,那么我如何在 运行 时间找到该路径?
如果您有更好的方法来做到这一点,我愿意接受建议。
谢谢。
在 android 中,您需要将它们存储为
内部存储如果你想在设备内存上存储私人数据。
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
外部存储 如果您想在共享外部存储上存储 public 数据。
/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) ||
Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
return true;
}
return false;
}
使用此功能在外部存储数据:
private void SaveImage(Bitmap finalBitmap) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ())
file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
不要忘记添加权限。
资料来源:
Android saving file to external storage
https://developer.android.com/guide/topics/data/data-storage.html#filesInternal
我正在开发一个 Android 应用程序(类似于购物车),它倾向于获取(购物车目录项的)图像并将其存储在本地目录中供以后使用。 (由于网络连接受限,我无法在每次打开购物车时从服务器加载图片)
我找到了一种使用 Google 的毕加索库 (this link) 从服务器下载图像的方法。
卡住的地方是我不知道指定什么路径来存储图像。我打算为此专门创建一个目录,但不确定在哪里创建该路径(android 应用程序目录结构 post 安装?)。
我希望将它存储在我的应用程序的 res 目录中,但是一旦安装了应用程序,它会是一样的吗? 如果是,那么我如何在 运行 时间找到该路径?
如果您有更好的方法来做到这一点,我愿意接受建议。
谢谢。
在 android 中,您需要将它们存储为
内部存储如果你想在设备内存上存储私人数据。
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
外部存储 如果您想在共享外部存储上存储 public 数据。
/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) ||
Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
return true;
}
return false;
}
使用此功能在外部存储数据:
private void SaveImage(Bitmap finalBitmap) {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ())
file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
不要忘记添加权限。 资料来源: Android saving file to external storage https://developer.android.com/guide/topics/data/data-storage.html#filesInternal