在Android Studio

时间:2017-05-24 06:59:17

标签: java android

我有json文件列表如下: enter image description here

目前,T.json文件为空。所有其他文件已经有一些文本。我需要的是创建这样的东西:

1.在T.json文件的开头添加类似

{
  "T": [

2.来自例如的文本复制T_Average.json和T_Easy.json到T.json文件

3.在T.json文件结束时添加:

] }

所以在程序执行结束时我需要在我的T.json中使用:

    {
      "T": [
             text from T_Average.json 
             text from T_Easy.json
      ]
    }

那么如何将第1步和第3步中的文本添加到文件中? 如何将其他文件中的所有内容复制到T.json文件中?

我已经尝试过这样的解决方案:

try(FileWriter fw = new FileWriter("T.json", true);
    BufferedWriter bw = new BufferedWriter(fw);
    PrintWriter out = new PrintWriter(bw))
{
    out.println("the text");
    out.println("more text");
} catch (IOException e) {
    //exception handling left as an exercise for the reader
}

或者喜欢这个:

try {
    String data = " This is new content";
    File file = new File(FILENAME);
    if (!file.exists()) {
        file.createNewFile();
    }
    fw = new FileWriter(file.getAbsoluteFile(), true);
    bw = new BufferedWriter(fw);
    bw.write(data);
    System.out.println("Done");
} catch (IOException e) {
    e.printStackTrace();
} 

但是所有的时间,在与fw = new FileWriter()对齐之后,它一直跳到了catch子句。

再一次: 如何将第1步和第3步中的文本添加到文件中? 如何将其他文件中的所有内容复制到T.json文件中? 谢谢:))

1 个答案:

答案 0 :(得分:0)

尝试

1。将以下方法getJsonFromAssetFilewriteFile添加到您的代码中

2. 阅读json文件

String content = getJsonFromAssetFile("T_Difficult.json");

3 创建最终的json(如上所述)

JSONObject finalJson = new JSONObject();

    try {
        JSONObject jsonObject = new JSONObject(content);

        JSONArray jsonArray = new JSONArray();
        jsonArray.put(jsonObject);

        finalJson.put("T", jsonArray);

    } catch (JSONException e) {
        e.printStackTrace();
    }

4. 将最终的json写入文件

writeFile(finalJson.toString().getBytes());

<强> WriteFile的

public static void writeFile(byte[] data, File file) throws IOException {

    BufferedOutputStream bos = null;

    try {
        FileOutputStream fos = new FileOutputStream(file);
        bos = new BufferedOutputStream(fos);
        bos.write(data);
    }
    finally {
        if (bos != null) {
            try {
                bos.flush ();
                bos.close ();
            }
            catch (Exception e) {
            }
        }
    }
}

<强> getJsonFromAssetFile

public static String getJsonFromAssetFile(Context context, String jsonFileName) {

    String json = null;
    try {

        InputStream is = context.getAssets().open(jsonFileName);

        int size = is.available ();

        byte[] buffer = new byte[size];

        is.read (buffer);

        is.close ();

        json = new String(buffer, ServiceConstants.ENCODING);

    }
    catch(IOException ex) {
        ex.printStackTrace();
        return null;
    }
    return json;

}

注意:使用getJsonFromAssetFile方法读取json资产文件并在内部/外部存储上写入文件,并提供writeFile方法的正确路径