不使用JSON库能否将字符串写入.json文件 Java代码无输出问题
问题原因
- 你使用的
FileWriter属于带缓冲区的字符输出流,写入的内容会先保存在JVM的IO缓冲区中,只有缓冲区满、主动刷入缓冲区或者关闭流的时候,内容才会真正写入磁盘文件。你的代码没有执行上述操作,所以内容停留在缓冲区没有落盘,看不到写入的内容。
解决方案
方案1:主动刷入缓冲区(适合需要持续写入文件的场景)
写入完成后调用flush()方法主动将缓冲区内容刷入磁盘:
FileWriter file = new FileWriter("C:\\Test.json"); file.write("test"); file.flush(); // 后续可继续执行写入操作
方案2:写入完成后关闭流(适合单次写入完成的场景)
close()方法执行时会自动先刷入缓冲区再释放IO资源:
FileWriter file = new FileWriter("C:\\Test.json"); try { file.write("test"); } finally { file.close(); }
方案3:使用try-with-resources语法(最推荐,Java 7及以上版本支持)
该语法会自动在写入完成后关闭流,无需手动编写释放资源的代码,也能避免异常场景下的资源泄漏问题,你可以直接把拼接好的合法JSON字符串写入即可,不需要额外依赖JSON库:
try (FileWriter file = new FileWriter("C:\\Test.json")) { // 此处写入你自己拼接好的JSON格式化字符串即可 file.write("test"); } catch (IOException e) { // 按需处理IO异常 e.printStackTrace(); }
注意事项
手动拼接JSON字符串写入时,需要对内容中的双引号、换行符、转义字符等做合规转义,避免最终生成的JSON文件格式非法无法解析。
内容的提问来源于stack exchange,提问作者Moscoot
相关产品推荐
相关产品推荐

