gpt4 book ai didi

java - 将数据添加/附加到现有 CSV 文件的特定行/单元格

转载 作者:行者123 更新时间:2023-12-01 09:21:07 27 4
gpt4 key购买 nike

我试图将一个值附加到 csv 文件中的特定行,但附加默认值是在 csv 文件末尾添加该值。不完全确定如何告诉它附加到特定行的末尾。我的代码如下所示:

try {
writer = new FileWriter(csvFile ,true);
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {

// use comma as separator
String[] id = line.split(cvsSplitBy);

if(id[0].equals("1")){
writer.append(",");
writer.append("Success");
System.out.println("Done");
}
}

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

目标是让程序在 csv 行 id 等于 1 的情况下添加“成功”。当前结果是:

Id,Name,Sex,Age
1,Nick,Male,23
2,Dick,Male,25,Success

我想要的是:

Id,Name,Sex,Age
1,Nick,Male,23,Success
2,Dick,Male,25

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

您不能只附加到行尾并期望以下行保留在原来的位置。考虑一下文本文件的结构,例如其中包含以下几行:

one
two

该文件包含以下字符序列:

“o”、“n”、“e”、“\n”、“t”、“w”、“o”、“\n”

现在,如果您在第 1 行末尾添加更多字符,则会覆盖第 2 行。

因此,当您在行尾插入字符时,您需要移动文件的其余部分以腾出空间。这意味着您必须复制文件其余部分的内容,写入“, Success”字符串,然后将保存的字符复制回文件。

但是您正在创建一个 FileWriter,并将附加标志设置为 true。这意味着每次写入都会附加到文件末尾。您需要做的不是追加,而是标记需要写入的位置,然后从该位置开始写入。也许执行此操作的最简单的类是 RandomAccessFile。

关于java - 将数据添加/附加到现有 CSV 文件的特定行/单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40163732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com