如何使用Java NIO实现JSON文件的读写与解析?附现有IO实现代码
使用Java NIO实现JSON文件的读写与解析
嘿,我来帮你把原来基于普通IO的JSON文件读写逻辑换成Java NIO的实现,NIO的API更简洁高效,还能自动帮你管理资源,不用手动关流啦~
1. 写入JSON到文件
原来的FileWriter实现可以替换成NIO的Files类,用Path来替代File作为文件路径的抽象,代码会更简洁:
import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.io.IOException; // 假设你用的是org.json.JSONObject import org.json.JSONObject; public void writeJsonToFileNio(String nomeFile, JSONObject obj) { Path filePath = Paths.get(nomeFile); try { // 如果文件不存在会自动创建,指定UTF-8字符集,覆盖已有文件(如果存在) Files.write(filePath, obj.toJSONString().getBytes("UTF-8"), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING); } catch (IOException e) { e.printStackTrace(); } }
关键点说明:
Path是NIO中替代File的路径抽象,比File更灵活,支持更多操作系统的路径格式Files.write方法会自动处理流的打开和关闭,不用手动调用flush()和close()StandardOpenOption.CREATE表示如果文件不存在就创建,TRUNCATE_EXISTING表示如果文件存在就清空原有内容再写入,和你原来的逻辑完全一致
2. 读取并解析JSON文件
同样,用NIO的Files类来读取文件内容,替换原来的FileReader:
import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.io.IOException; import org.json.JSONObject; import org.json.JSONTokener; public JSONObject readJsonFromFileNio(String nomeFile) { Path filePath = Paths.get(nomeFile); JSONObject jsonObj = null; try { // Java 11+可以直接读取文件内容为字符串,简洁高效 String jsonContent = Files.readString(filePath); jsonObj = new JSONObject(new JSONTokener(jsonContent)); // 如果是Java 8或者处理超大文件,推荐用缓冲流读取(避免一次性加载到内存): // try (BufferedReader reader = Files.newBufferedReader(filePath)) { // jsonObj = new JSONObject(new JSONTokener(reader)); // } } catch (IOException e) { e.printStackTrace(); } return jsonObj; }
关键点说明:
Files.readString是Java 11+新增的方法,能直接把文件内容读成字符串,代码非常简洁- 如果你的项目用的是Java 8,就用
Files.newBufferedReader配合JSONTokener,同样能实现解析,而且适合处理大文件,不会一次性把整个文件加载到内存 - 用
try-with-resources(注释里的写法)可以自动关闭BufferedReader,彻底避免资源泄漏问题
额外提示
如果你用的是其他JSON库(比如Jackson、Gson),NIO的读写逻辑是通用的,只需要把JSON序列化/反序列化的部分换成对应库的API就行,核心的文件IO部分都是用Files类来处理。
内容的提问来源于stack exchange,提问作者Alice
相关产品推荐
相关产品推荐

