gpt4 book ai didi

java - 用java编写时,仅在csv文件中添加一行

转载 作者:太空宇宙 更新时间:2023-11-04 06:48:41 25 4
gpt4 key购买 nike

我用java编写了用于写入csv文件的代码。但是我只能写入一行。从第二行开始,行不会被附加。

请检查下面的代码以获取 csv 文件

"1.0.0.0","1.0.0.255","16777216","16777471","AU","Australia"
"1.0.1.0","1.0.3.255","16777472","16778239","CN","China"
"1.0.4.0","1.0.7.255","16778240","16779263","AU","Australia"
"1.0.8.0","1.0.15.255","16779264","16781311","CN","China"
"1.0.16.0","1.0.31.255","16781312","16785407","JP","Japan"
"1.0.32.0","1.0.63.255","16785408","16793599","CN","China"
"1.0.64.0","1.0.127.255","16793600","16809983","JP","Japan"
"1.0.128.0","1.0.255.255","16809984","16842751","TH","Thailand"

用于在java中编写csv代码

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import au.com.bytecode.opencsv.CSVWriter;


public class CSVFileReader {

public static void main(String[] args) {

CSVFileReader obj = new CSVFileReader();
obj.run();

}

public void run() {

String csvFile = "C:/Users/piyush bhatia/Desktop/whois.csv";

BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
String sFileName="C:/Users/piyush bhatia/Desktop/whois2.csv";

try {

br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {

// use comma as separator
String[] country = line.split(cvsSplitBy);
if(line.contains("AU"))
{
FileWriter writer = new FileWriter(sFileName);
//writer.append(country[4]);
writer.write(country[2]);

//writer.append('\n');
writer.flush();
writer.close();


System.out.println("Country [code= " + country[2]
+ " , name=" + country[5] + "]");
}
else
{

System.out.println("");
}


}

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


writer.flush(); // flush and close only once.
writer.close();
}

System.out.println("Done");
}

}

当我打印找到 AU 的值时,代码工作正常。但是当我创建 csv 文件时,它仅附加一行。它不会附加找到 AU 的第二行。创建新的 csv 文件时,仅附加第一个 AU 行。找到 AU 的第三行,它不会被打印。请指导我...

最佳答案

创建 FileWriter 对象并传入 boolean 参数 true 进行追加:

FileWriter writer = new FileWriter(sFileName, true);

或者将该对象的构造(以及刷新和关闭)移到循环之外。目前,每次向文件写入一行都会覆盖该文件的内容。

其他一些一般性评论:

  • 使用 CSV 解析库读取您的文件。有很多很好的例子,例如http://commons.apache.org/proper/commons-csv .

  • 为文件编写器使用正确的错误处理。目前,如果您有异常(exception),作家不会被关闭。如果您有 Java 7+,请使用 try-with-resources 语句。

关于java - 用java编写时,仅在csv文件中添加一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23625918/

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