微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Writer 类限制单行中的列/字符

如何解决使用 Writer 类限制单行中的列/字符

在过去的几个小时里,我一直在使用我制作的文本编辑器应用程序。该编辑器应该接受章节内容结构中的输入,然后将这些输入写入 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 文件的工作方式相同。

解决方法

经过一番折腾,我找到了解决问题的方法。 由于 ContentArea 中的文本存储在 String ArrayList 中,因此使用 \n 存储分隔符。否定这一点的方法是简单地将字符串序列化的 JSON 上的 \n 替换为 System.lineSeparator(),如下所示:

String json = gsonpretty.toJson(ArrayList);
json = json.replace("\\n",System.lineSeparator());

这允许写入的文件写入真正的换行符,从而取消行的列限制。在尝试使用我的 JSON 反序列化器读取它后,它运行良好。理论上,超长的文本行仍然可能引发错误,但我认为这种情况不太可能发生。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。