目前,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文件中? 谢谢:))
答案 0 :(得分:0)
尝试
1。将以下方法getJsonFromAssetFile
和writeFile
添加到您的代码中
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
方法的正确路径