我编写了Java代码,用于从一个文件中读取并写入新文件。我正在阅读的文件有5000行记录,但是当我写入新文件时,我只能写入4700-4900条记录。
我想可能是我同时从文件中读取并写入文件,这可能会造成问题。
我的代码如下:
从文件中读取:
public String readFile(){
String fileName = "/home/anand/Desktop/index.txt";
FileReader file = null;
try {
file = new FileReader(fileName);
BufferedReader reader = new BufferedReader(file);
String line = "";
while ((line = reader.readLine()) != null) {
line.replaceAll("ids", "");
System.out.println(line);
returnValue += line + "\n";
}
return returnValue;
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (file != null) {
try {
file.close();
} catch (IOException e) {
// Ignore issues during closing
}
}
}
}
写入文件:
public void writeFile(String returnValue){
String newreturnValue = returnValue.replaceAll("[^0-9,]", "");
String delimiter = ",";
String newtext ="";
String[] temp;
temp = newreturnValue.split(delimiter);
FileWriter output = null;
try {
output = new FileWriter("/home/anand/Desktop/newinput.txt");
BufferedWriter writer = new BufferedWriter(output);
for(int i =0; i < temp.length ; i++){
writer.write("["+i+"] "+temp[i]);
writer.newLine();
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (output != null) {
try {
output.close();
} catch (IOException e) {
// Ignore issues during closing
}
}
}
}
我需要有关如何同时读取和写入文件的建议。
答案 0 :(得分:3)
您需要关闭writer
而不是output
。 BufferedWriter
可能没有写出所有的行,因为你永远不会关闭它。
答案 1 :(得分:0)
您必须关闭编写器对象。最后几行可能还没有刷新到文本文件中。
此外,您是否了解Java 7中引入的try-with-resource?您可以通过利用它来压缩代码:
public String readFile(){
String fileName = "/home/anand/Desktop/index.txt";
try(BufferedReader reader = new BufferedReader(new FileReader(filename)) {
String line = "";
while ((line = reader.readLine()) != null) {
line.replaceAll("ids", "");
System.out.println(line);
returnValue += line + "\n";
}
return returnValue;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
通过执行此操作,无论是否抛出异常,Java都会在try块完成后自动为您关闭reader对象。这使您更容易阅读代码:)