Java 使用换行符读取和写入.csv文件

Java 使用换行符读取和写入.csv文件,java,Java,我有一个.csv文件,如下所示: Col1,Col2,Col3,Col4,Col5 1,2,3,4,5 //Read stream File myFile = new File("C:\\testFile.csv"); InputStreamReader isTest = new InputStreamReader(myStream); StringBuilder sbTest = new StringBuilder(); BufferedReader brTest = new Buffere

我有一个.csv文件,如下所示:

Col1,Col2,Col3,Col4,Col5
1,2,3,4,5
//Read stream
File myFile = new File("C:\\testFile.csv");
InputStreamReader isTest = new InputStreamReader(myStream);
StringBuilder sbTest = new StringBuilder();
BufferedReader brTest = new BufferedReader(isTest );
String readTest = brTest.readLine();

while(readTest != null) {
    sbTest .append(readTest);
    readTest = brTest.readLine();
}

//Write stream

FileWriter fwTest = new FileWriter(myFile .getAbsoluteFile());
BufferedWriter bwTest = new BufferedWriter(fwTest);

bwTest .write(sbTest.toString());
bwTest .close();
private static final String NEWLINE = System.getProperty("line.separator");
我正在做这样的事情:

Col1,Col2,Col3,Col4,Col5
1,2,3,4,5
//Read stream
File myFile = new File("C:\\testFile.csv");
InputStreamReader isTest = new InputStreamReader(myStream);
StringBuilder sbTest = new StringBuilder();
BufferedReader brTest = new BufferedReader(isTest );
String readTest = brTest.readLine();

while(readTest != null) {
    sbTest .append(readTest);
    readTest = brTest.readLine();
}

//Write stream

FileWriter fwTest = new FileWriter(myFile .getAbsoluteFile());
BufferedWriter bwTest = new BufferedWriter(fwTest);

bwTest .write(sbTest.toString());
bwTest .close();
private static final String NEWLINE = System.getProperty("line.separator");
但是,当我打开文件时,我会看到以下CSV:

Col1,Col2,Col3,Col4,Col51,2,3,4,5

有没有办法解析换行符并确保在写入文件时追加换行符?

看起来您需要做的就是将换行符追加到StringBuilder中。要使其独立于平台,请使用系统的line.separator属性,如下所示:

sbTest.append(readTest).append(System.getProperty("line.separator"));
将字符串写入BufferWriter时,对该字符串调用
trim()
,以删除悬空换行符

bwTest.write(sbTest.toString().trim());

正如dkatzel所建议的,您可能还希望将行分隔符设置为常量。大概是这样的:

Col1,Col2,Col3,Col4,Col5
1,2,3,4,5
//Read stream
File myFile = new File("C:\\testFile.csv");
InputStreamReader isTest = new InputStreamReader(myStream);
StringBuilder sbTest = new StringBuilder();
BufferedReader brTest = new BufferedReader(isTest );
String readTest = brTest.readLine();

while(readTest != null) {
    sbTest .append(readTest);
    readTest = brTest.readLine();
}

//Write stream

FileWriter fwTest = new FileWriter(myFile .getAbsoluteFile());
BufferedWriter bwTest = new BufferedWriter(fwTest);

bwTest .write(sbTest.toString());
bwTest .close();
private static final String NEWLINE = System.getProperty("line.separator");
然后,while循环将包括以下内容:

sbTest.append(readTest).append(NEWLINE);

什么是您的
myStream
?您需要在将行引入
sbTest
时添加换行符。我不确定您是否要使用stringbuilder。否则,您希望在每个appendmyStream都是.csv文件之后添加换行符。如果您没有定义
myStream
,您是如何运行程序的?最好将属性值作为常量取出,因为您只需查找一次。