Java 文件写入随机停止?
Java File Writing Randomly stops?
这个让我发疯。我有以下代码读取 csv 文件并将其重新格式化为复制粘贴就绪 java 数组格式:
CSVReader reader = new CSVReader(new FileReader(fileName), ',' , '"' , 0);
FileWriter writer = new FileWriter(outFile);
//Read CSV line by line and use the string array as you want
//Read all rows at once
List<String[]> allRows = reader.readAll();
//print table header
//Read CSV line by line and use the string array as you want
for(String[] row : allRows){
System.out.println(Arrays.toString(row));
writer.write("{");
for(int lcv = 0;lcv<row.length;lcv++){
if(lcv == row.length -1){
writer.write(row[lcv]);
}else{
writer.write(row[lcv]+",");
}
}
writer.write("},\n");
}
如您所见,代码将文件中的记录打印到控制台,以及我复制粘贴的文件。代码有效,没有错误等。但是,创建的文件在记录中途停止 运行domly。我单步执行代码,写调用正常,最奇怪的是控制台打印所有记录都很好,这应该反映创建的文件。有没有人可以解释为什么文件没有完成但控制台完成了?
更多信息。初始文件有 76 行,大约 36KB。我认为问题是达到了内存限制,因为它停在第 56 行,共 76 行。我重新 运行 56-76(现在是 1-20),它停在第 18 行。这让我很困惑。 .
您可能需要在最后关闭 FileWriter
(并冲洗以备不时之需)。
for(...) {
writer.write(row);
}
writer.flush();
writer.close();
也许你应该尝试刷新作者??您可以在最后或每次写入后执行 - 通常您在最后执行。
如果不显式刷新,您需要依靠运行时和 OS 来在感觉是时候刷新一些东西。或者,当您关闭示例代码中未执行的输出流时,流会被刷新...
尝试
writer.flush();
完成后一定要关闭。
这个让我发疯。我有以下代码读取 csv 文件并将其重新格式化为复制粘贴就绪 java 数组格式:
CSVReader reader = new CSVReader(new FileReader(fileName), ',' , '"' , 0);
FileWriter writer = new FileWriter(outFile);
//Read CSV line by line and use the string array as you want
//Read all rows at once
List<String[]> allRows = reader.readAll();
//print table header
//Read CSV line by line and use the string array as you want
for(String[] row : allRows){
System.out.println(Arrays.toString(row));
writer.write("{");
for(int lcv = 0;lcv<row.length;lcv++){
if(lcv == row.length -1){
writer.write(row[lcv]);
}else{
writer.write(row[lcv]+",");
}
}
writer.write("},\n");
}
如您所见,代码将文件中的记录打印到控制台,以及我复制粘贴的文件。代码有效,没有错误等。但是,创建的文件在记录中途停止 运行domly。我单步执行代码,写调用正常,最奇怪的是控制台打印所有记录都很好,这应该反映创建的文件。有没有人可以解释为什么文件没有完成但控制台完成了?
更多信息。初始文件有 76 行,大约 36KB。我认为问题是达到了内存限制,因为它停在第 56 行,共 76 行。我重新 运行 56-76(现在是 1-20),它停在第 18 行。这让我很困惑。 .
您可能需要在最后关闭 FileWriter
(并冲洗以备不时之需)。
for(...) {
writer.write(row);
}
writer.flush();
writer.close();
也许你应该尝试刷新作者??您可以在最后或每次写入后执行 - 通常您在最后执行。
如果不显式刷新,您需要依靠运行时和 OS 来在感觉是时候刷新一些东西。或者,当您关闭示例代码中未执行的输出流时,流会被刷新...
尝试
writer.flush();
完成后一定要关闭。