将JSON与JavaNIO结合使用

将JSON与JavaNIO结合使用,java,json,nio,Java,Json,Nio,我有一个使用json文件的程序。我在文件中写入一个jsonobject,然后从文件中读取并解析它 对于在我使用的文件上写入: File file=new File(nomeFile); try { file.createNewFile(); FileWriter fileWriter = new FileWriter(file); fileWriter.write(obj.toJSONString())

我有一个使用json文件的程序。我在文件中写入一个jsonobject,然后从文件中读取并解析它

对于在我使用的文件上写入:

File file=new File(nomeFile);


        try {

            file.createNewFile();
            FileWriter fileWriter = new FileWriter(file);
            fileWriter.write(obj.toJSONString());
            fileWriter.flush();
            fileWriter.close();


        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
并阅读:

try {
            FileReader f=new FileReader(file);

            obj =parser.parse(f);
            JSONObject jsonObj = (JSONObject) obj;

//and i do the get
现在我必须更改此代码以使用NIO而不是IO

可能吗? 我怎么做?
谢谢

您可以查看本文并

快速尝试:

对于写入:

Path path = Paths.get("src/main/resources/question.txt");

String question = "To be or not to be?";

Files.write(path, question.getBytes());
全文如下:

Path path = Paths.get("src/main/resources/shakespeare.txt");

try {

  Files.lines(path).forEach(System.out::println);//print each line

} catch (IOException ex) {

  ex.printStackTrace();//handle exception here

}

写入:

Gson gson = new Gson();
try (FileWriter fw = new FileWriter(CLI_FILES_DIR + File.separator + "applications" + File.separator + "yourFile.json")) {
    BufferedWriter bw = new BufferedWriter(fw);
    bw.write(gson.toJson(yourObject));
    bw.flush();
    bw.close();
} catch (IOException e) {
    logger.error("IOException: {}", e.getMessage(), e);
}
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(CLI_FILES_DIR + File.separator + "applications" + File.separator + "yourFile.json"))) {
    YourObject yourObject = gson.fromJson(bufferedReader, YourObject.class);
    ...
} catch (IOException e) {
    logger.error("IOException: {}", e.getMessage(), e);
}
阅读:

Gson gson = new Gson();
try (FileWriter fw = new FileWriter(CLI_FILES_DIR + File.separator + "applications" + File.separator + "yourFile.json")) {
    BufferedWriter bw = new BufferedWriter(fw);
    bw.write(gson.toJson(yourObject));
    bw.flush();
    bw.close();
} catch (IOException e) {
    logger.error("IOException: {}", e.getMessage(), e);
}
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(CLI_FILES_DIR + File.separator + "applications" + File.separator + "yourFile.json"))) {
    YourObject yourObject = gson.fromJson(bufferedReader, YourObject.class);
    ...
} catch (IOException e) {
    logger.error("IOException: {}", e.getMessage(), e);
}

您可以找到一个完整的示例

文件
文件编写器
文件阅读器
应该与Java NIO兼容。您希望使用哪些NIO特定的类和方法?您不想读/写文件吗?
file.createNewFile()
在这里完全没有意义,或者更糟
newfilewriter(…)
已经这样做了,您现在正在强制它删除刚刚创建的文件。但是bufferedReader在IO中,而不是在NIO中。我不能用IO:(这是problem@Alice你不能使用
java.io
为什么?在这种情况下使用它是完全正常的。@Alice我有同样的问题:你不能使用java.io为什么?这是我练习的要求