Android 如何写入存储在资产文件夹中的json文件?

Android 如何写入存储在资产文件夹中的json文件?,android,json,Android,Json,我在应用程序的资产文件夹中有一个config.json文件。现在的场景是,我将从服务器中提取一个JSON内容,并更新(覆盖)存储在asset文件夹中的config.JSON文件。我怎样才能做到这一点?以下是JSON的示例: { "id": 1, "name": "A green door", "price": 12.50, "tags": ["home", "green"] } 我能够从资产文件夹中读取文件。但如何在该文件中写入 public String lo

我在应用程序的资产文件夹中有一个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;
}

无法将数据写入资产/原始文件夹,因为它已打包(.apk)且大小不可扩展。

您无法写入资产文件夹。因为它是一个只读文件夹。相反,您需要将文件保存到应用程序文件夹中。无论何时要使用配置,请检查应用程序文件夹中是否存在该文件。如果存在,则使用它,如果不存在,则使用默认值

例如,当您获取config.json时,保存文件:

String filename = "config.json";
String fileContents = "Your config content..";
FileOutputStream outputStream;

try {
    outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
    outputStream.write(fileContents.getBytes());
    outputStream.close();
} catch (Exception e) {
    e.printStackTrace();
}
然后,无论何时您想使用,请阅读:

File file = new File(context.getFilesDir(), "config.json");

String config = "";
if(file.exists()) {
  // use the config.
} else {
  // use the config from asset.
}

请阅读有关保存文件的详细信息。

无论我们在资产文件夹中保存了哪些文件,都无法在运行时对其进行修改。在APK中,文件是只读的。我们既不能删除也不能在此目录中创建任何文件

您可以做的是将新的JSON写入一个文件(例如,getFileDir())


无法写入资源文件夹。它是只读的。无法从同一应用程序中修改APK内容。所以你不能给资产档案写任何其他的意见?如何写入本地文件@您可以将文件保存到应用程序文件夹中。您可以轻松地写入本地文件。是否有其他方法可以实现此目的@您可以使用本地存储,如内部存储、外部存储、共享首选项、数据库管理。谢谢你的帮助。我明白了