【发布时间】:2015-05-10 17:24:42
【问题描述】:
我希望你能帮助我,我正在读取一个多行的文件。我使用 BufferedReader 来分离数据。如果数据 1 与新数据 1 输入不匹配,它将使用 BufferedWriter 将新数据 1 输入替换为旧数据 1。使用以下代码,它确实更改了数据 1,但它附加了其他行数据 2 和 3。我只想更改数据 1,但行保持不变。
Example(Input)
abc, 123, 456, 3345
test, t245, 442, d444
dddd, 4444, ffff, 333
public void test(String DATA1, String DATA2) throws IOException{
br = new BufferedReader(new FileReader(file));
while ((CurrentLine = br.readLine()) != null) {
String[] modify = CurrentLine.split(split);
String data1 = modify[0];
String data2 = modify[1];
String data3 = modify[2];
String data4 = modify[3];
bw = new BufferedWriter(new FileWriter(file, true));
if (!data1.contains(DATA1)) {
StringBuilder sb = new StringBuilder();
while(CurrentLine != null){
sb.append(CurrentLine.replace(data1, DATA1));
sb.append("\n");
CurrentLine = br.readLine();
}
bw.write(sb.toString());
RESIDENTS_OLDDETAILS = new File(oldfile);
RESIDENTS_OLDDETAILS.delete();
RESIDENTS_NEWDETAILS = new File(newfile);
RESIDENTS_NEWDETAILS.renameTo(old);
br.close();
bw.close();
Example(Output of the above code)
newabc, t245, 442, d444
newabc, t245, 442, d444
newabc, t245, 442, d444
Expected output
aaa, 123, 456, 3345
test, t245, 442, d444
dddd, 4444, ffff, 333
Edited Expected output
aaa, 123, 456, 3345
test, t245, 442, d444
dddd, 4444, ffff, 333aaa, 123, 456, 3345
test, t245, 442, d444
dddd, 4444, ffff, 333
【问题讨论】:
-
你的预期输出是什么?
-
您好,已添加。再次感谢您的宝贵时间。
-
file是否在支持通过来自同一文件的不同文件描述符进行读写的文件系统上? -
你好,它会读取一个文件,如果与数据1不匹配,则删除该文件并在新文件中重写。
标签: java arrays file bufferedreader bufferedwriter