[更新]问题不同,csv文件格式没什么。题 将是“使用File Writer编写csv文件的最后几条记录 不见了。
在我的java应用程序中,我需要在csv
文件中追加超过65535行。但它只在一张纸上写入65535行。我没有使用任何库。一些最终记录丢失。如何解决这个问题..........
public void writeSubmission(){
try {
writer = new FileWriter("res/sample.csv");
writer.append("PhraseId");
writer.append(',');
writer.append("Sentiment");
writer.append('\n');
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void readTestData(){
String path="res/test.tsv";
Calculation cal=new Calculation();
int counter=0;
try {
BufferedReader bReader = new BufferedReader(new FileReader(path));
String line;
writeSubmission();
bReader.readLine();
while ((line = bReader.readLine()) != null) {
String datavalue[] = line.split("\t");
writer.append(datavalue[0]);
writer.append(',');
try {
double value=cal.calculate(datavalue[2]);
System.out.println(value);
String val;
if(value<-0.4)
{
val="0";
}
else if(value>-0.4 && value<-0.1)
{
val="1";
}
else if(value>-0.1 && value<+0.1)
{
val="2";
}
else if(value>+0.1 && value<+0.40)
{
val="3";
}
else{
val="4";
}
counter++;
writer.append(val);
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e);
}
writer.append('\n');
}
System.out.println(counter);
bReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println(e);
} catch (IOException e){
e.printStackTrace();
System.out.println(e);
}
}
答案 0 :(得分:3)
我认为您的问题可能是,您在另一端打开CSV的工具并不需要超过65535行,而不是Java&#39;做错了什么。它几乎可以肯定是另一端的错误,而不是你的Java代码。 (例如,FileWriter
根本不关心65535行。)
例如,如果您使用的是Excel 2003,则会看到此问题:How to get around 64k row limit in Excel
答案 1 :(得分:0)
最后我修复了错误。在代码推送现有流后使用.File Writer应该是flush
。或者close
作者自动flush
和close
flush方法刷新输出流并强制任何缓冲 要写出的输出字节。冲洗的一般合同是 调用它表示,如果以前写过的字节有 由输出流的实现缓冲,这样的字节 应立即写入预定的目的地。
writer = new FileWriter("res/sample.csv");
writer.flush();
writer.close();