在过去的几个小时里,我一直在摆弄我制作的一个文本编辑器应用程序。该编辑器应该在章节内容结构中获取输入,然后将这些输入写入json文件。我使用的当前代码在我尝试输入数千个单词之前运行良好。问题是,由于该应用程序是用于小说写作/归档的,因此能够存储数千个单词非常重要。
writer类,我这样使用它:
OutputStream outputStream = new FileOutputStream(JFC.getSelectedFile() + ".json");
Writer fw = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8);
fw.write(json);
json变量是我用gson生成的序列化json,如下所示:
ArrayList<Chapters> allChapters = new ArrayList<>();
Gson gsonpretty = new GsonBuilder().setPrettyPrinting().create();
String json = gsonpretty.toJson(allChapters);
正如我前面所说,这段代码适用于较短的文本,但较长的文本在行中输入大约24000个字符后会被截断。这是因为.tojson()方法将所有这些长行插入到一个长列中。漂亮地打印json有一点帮助,因为json符号被分隔成各自的行,但当它开始编写长内容时,最终会失败。
有没有办法将当前文本中的“\n”替换为生成的json文件中的实际换行符?请记住,编写.json文件的方式与编写.txt文件的方式相同。
1条答案
按热度按时间3pmvbmvn1#
在坐立不安了一会儿之后,我找到了解决问题的方法。由于contentarea中的文本存储在字符串arraylist中,因此使用
\n
. 否定这一点的方法是简单地替换\n
具有System.lineSeparator()
在字符串上序列化json,如下所示:这允许写入的文件写入真正的换行符,从而取消行的列限制。在尝试用我的json反序列化程序读取它之后,它工作得非常好。从理论上讲,过长的文本行仍然可能会抛出错误,但我认为这不太可能发生。