【问题标题】:Read a CSV file and Write a Json file in Java读取 CSV 文件并用 Java 编写 Json 文件
【发布时间】:2018-10-11 22:04:01
【问题描述】:

我修改了我的代码:

private static final String SAMPLE_CSV_FILE_PATH = "src/main/resources/testCSV.csv";
private static final String OUT_PUT_CSV_PATH = "src/main/resources/outCSV.csv";

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

    Reader reader = Files.newBufferedReader(Paths.get(SAMPLE_CSV_FILE_PATH));
    CSVReader csvReader = new CSVReader(reader);



    List<String[]> records = csvReader.readAll();
    Writer writer = Files.newBufferedWriter(Paths.get(OUT_PUT_CSV_PATH));
    CSVWriter out = new CSVWriter(writer);

    int i = 1;
    int total = 0;
    while(i < records.size()){
        String[] result = records.get(i);
        for(int j =1; j<= Integer.parseInt(result[1]); j++){
            String pattern="00000";
            DecimalFormat myFormatter = new DecimalFormat(pattern);
            String output = myFormatter.format(j);
            writer.append(result[0]+output+"\n");
            total++;
        }
        i++;
    }
    out.flush();
    out.close();
    System.out.println(total);
}

现在我使用第一个 CSV 文件来生成序列号,类似于:

NAIS00001
NAIS00002
...
NAIS00625

然后我将这些序列号写入一个新的 CSV 文件。但是只有一列。一列中有 600 万条数据...如何为新列加注星标?

【问题讨论】:

  • "但是在json文件中写入太大了。" - 那是什么意思?你有错误吗?请提供更多详细信息。
  • 或许您可以在此处编写 csv 示例,而不是链接外部服务。

标签: java json filewriter json-simple


【解决方案1】:

您的 Filewriter 未以追加模式写入,因此您的文件每次通过外循环时都会被覆盖。不是文件大小的问题。

试试这个:

FileWriter fileWriter = new FileWriter("src/main/resources/testOutPut.json", true);

Documentation

【讨论】:

  • 谢谢,这行得通。但是我运行了 5 秒,我的 json 文件变成了 100mb。估计有这么大?我有 600 万个号码。我需要换一种方法吗?
  • 对于 600 万个数字,如果文件变得那么大,我不会感到惊讶,因为除了所有额外的括号和引号等之外,还有很多额外的开销您必须生成的连续数字。如果文件大小有问题,您可以将信息保留在 csv 文件中并根据需要进行转换,而不是将数据保存为 2 种不同的格式。
  • 是的,但问题是 CSV 文件只显示型号和总数量,我需要结合型号和数量来生成序列号。我可以创建一个新的 CSV 文件来存储序列号吗?在 CSV 中存储 600 万个数字会比在 json 中存储更小吗?
  • 至少,您会删除所有与 JSON 一起出现的额外格式,所以是的,我希望您可以通过这种方式节省一些空间。但是,如果您的所有序列号都像您的示例中那样长 9 个字符,并且您有大约 600 万个序列号,并且假设您使用的是 UTF-8,那么至少有大约 5400 万字节的数据,大约是一半你之前得到的 100mb。
猜你喜欢
  • 2012-12-22
  • 2016-10-22
  • 2019-07-10
  • 2012-10-17
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多