我的应用程序资产文件夹中有一个config.json文件。现在的情况是,我将从服务器中提取JSON内容,并将更新(覆盖)存储在asset文件夹中的config.json文件。我怎样才能做到这一点?以下是JSON示例:
{
"id": 1,
"name": "A green door",
"price": 12.50,
"tags": ["home", "green"]
}
我能够从资产文件夹中读取文件。但是如何写入该文件?:
public String loadJSONFromAsset() {
String json = null;
try {
InputStream is = getActivity().getAssets().open("config.json");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
答案 0 :(得分:3)
您无法写入资产文件夹。因为它是一个只读文件夹。相反,您需要将文件保存到您的应用程序文件夹。每当您想使用配置时,请检查您的应用程序文件夹中是否存在该文件。如果它存在,使用它,如果不存在,使用默认值。
例如,当您获得config.json时,请保存文件:
File file = new File(context.getFilesDir(), "config.json");
String config = "";
if(file.exists()) {
// use the config.
} else {
// use the config from asset.
}
然后,无论何时使用,请阅读:
# Indexes + Directory Root.
DirectoryIndex index.php
DocumentRoot /var/www/html/mywebsite/public
ServerName dev.mywebsite.test
<Directory "/var/www/html/mywebsite/public">
Options All
AllowOverride All
Allow from all
</Directory>
在Save Files on Device Storage了解详情以保存文件。
答案 1 :(得分:2)
无论我们在资源文件夹中保留哪些文件,都无法在运行时进行修改。在APK中,文件是只读的。我们既不能删除也不能在此目录中创建任何文件。
您可以做的是将新的JSON写入文件(例如,getFilesDir()) As this answers suggests
答案 2 :(得分:1)
您无法将数据写入asset / Raw文件夹,因为它已打包(.apk)且大小不可扩展。 check here