java - 在java中使用JSON读取和写入字符串文件

标签 java json string printwriter bufferedwriter

我想读取一个文本文件并处理它的数据。例如输入文件将如下所示:

john,judd,134
Kaufman,kim,345

然后程序应该以 JSON 文件的形式解析和存储这些数据,以便将其组织起来以供进一步处理。我正在使用 JSON-simple对于这个任务。这是我编写的原型(prototype)代码:

package com.company;

import org.json.simple.JSONObject;

import java.io.*;

public class Main {


static JSONObject jsonObject = new JSONObject();
static String output;

public static void main(String[] args) throws IOException {

    read("/Users/Sepehr/Desktop/JSONexample.txt");
    write("/Users/Sepehr/Desktop/JSONexampleout,txt");

}

public static String read(String filenameIn) throws IOException {

    BufferedReader bufferedReader = new BufferedReader(new FileReader(filenameIn));
    String s ;

    while ( (s = bufferedReader.readLine() ) != null)

    {
        String[] stringsArr = s.split(",");


        jsonObject.put( "famname" , stringsArr[0] );
        jsonObject.put("name" , stringsArr[1]);
        jsonObject.put("id", stringsArr[2]);

        bufferedReader.close();


    }

    return output=jsonObject.toJSONString();


}


public static String write(String filenameOut) throws FileNotFoundException {

    PrintWriter printWriter = new PrintWriter(filenameOut);
    printWriter.write(jsonObject.toJSONString());
    printWriter.close();

    String se = "yaaayyy :|";
    return se;

}



}

运行程序后,我得到以下异常:

Exception in thread "main" java.io.IOException: Stream closed
at java.io.BufferedReader.ensureOpen(BufferedReader.java:97)
at java.io.BufferedReader.readLine(BufferedReader.java:292)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at com.company.Main.read(Main.java:30)
at com.company.Main.main(Main.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

到底出了什么问题?

应该如何更好地设计这个程序?

最佳答案

您正在关闭循环中的 BufferedReader

while ( (s = bufferedReader.readLine() ) != null)

    {
        String[] stringsArr = s.split(",");


        jsonObject.put( "famname" , stringsArr[0] );
        jsonObject.put("name" , stringsArr[1]);
        jsonObject.put("id", stringsArr[2]);

        //*************
        bufferedReader.close(); // don't close the reader!
        //*************

    }

关于java - 在java中使用JSON读取和写入字符串文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29387152/

相关文章:

java - 如何将 JSON Web 服务索引到 Elasticsearch 中?

java - 如何设计包含大量数据的JMS消息

java - 用于不同类型子对象的 Libgdx 池

python - Pandas DataFrame 中的 JSON 对象

.NET字符串串联(+&+ =)与StringBuilder

string - 构建 16 位操作系统 - 字符数组不起作用

java - 任务不可序列化 - Spark Java

java - 与大字符串数据相比,使用 JSON 对象的重要性是什么?

json - 新手Go,试图梳理如何处理JSON

c# - CSPR 的子字符串也是 CSPR 吗?