Используйте JSON с JAVA NIO - PullRequest
0 голосов
/ 02 мая 2018

У меня есть программа, которая использует файл 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

это возможно? как мне это сделать? спасибо

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

WRITE

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);
}

Вы можете найти полный образец здесь

0 голосов
/ 02 мая 2018

Вы можете проверить эту статью как читать с NIO и как писать с NIO

Быстрая попытка:

Для записи:

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

}
...