gpt4 book ai didi

java - 使用多个 BufferedReader 读取单个文件

转载 作者:行者123 更新时间:2023-11-30 04:59:20 27 4
gpt4 key购买 nike

我正在开发一个程序,该程序需要更新一行,该行的值取决于随后读取的行的结果。我认为我可以在 Java 中使用两个 BufferedReader 将读取器定位在要更新的行上,而另一个则用于修复值的行(前面可能有未知数量的行)。这里的问题是,我在同一个文件上使用两个 BufferedReader,即使我认为我对索引的处理正确,调试结果似乎也不可靠。代码如下:

            String outFinal
FileName=fileOut;

File fileDest=new File(outFinalFileName);
try {
fout = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(fileDest)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}

FileReader inputFile=null;

try {
inputFile = new FileReader(inFileName);
} catch (FileNotFoundException e2) {
e2.printStackTrace();
}
BufferedReader fin = new BufferedReader(inputFile);

BufferedReader finChecker = new BufferedReader(inputFile); //Checks the file and matches record to change
String line="";
String lineC="";
int lineNumber=0;
String recordType="";
String statusCode="";
try {
while ((lineC = finChecker.readLine()) != null) {
lineNumber++;
if (lineNumber==1)
line=fin.readLine();
recordType=lineC.substring(0,3);//Gets current Record Type
if (recordType.equals("35")){
while(!line.equals(lineC)){
line=fin.readLine();
if (line==null)
break;
fout.write(line);


}
}else if (recordType.equals("32")){
statusCode=lineC.substring(4,7);
if(statusCode.equals("XX")){
updateRecordLine(line,fout);
}
}


}
returnVal=true;

} catch (IOException e) {
e.printStackTrace();

}

提前致谢。

最佳答案

嗯,BufferedReader 只能读取内容,它没有能力将数据写回。因此,您需要的是一个 BufferedReader 来获取内容,以及一个 BufferedWriter 从 BufferedReader 获取所有输入,并将其输出到临时文件,并包含更正/附加的数据。

然后,当您完成后(即 BufferedReader 和 BufferedWriter 流都关闭),您需要丢弃原始文件,或者将临时文件重命名为原始文件的名称。

您基本上是将原始文件复制到临时文件,修改临时文件输出中的相关行,然后在原始文件上复制/重命名临时文件。

关于java - 使用多个 BufferedReader 读取单个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7472971/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com