如何在文件中或在遇到换行符之前附加一行?

时间:2015-06-11 12:12:48

标签: java file

输入文件:

Online_system_id
bank_details
payee
credit_limit
loan_amount

Online_system_id
bank_details
payee
credit_limit
loan_amount

预期输出:

Online_syatem_id
bank_details
payee
credit_limit
loan_amount
proc_online_system_id

Online_syatem_id
bank_details
payee
credit_limit
loan_amount
proc_online_system_id

以下是供参考的代码 我想在每条记录之后添加一行,即在遇到空白行之前 我需要做些什么改变?

String line;
int flag=0;
PrintStream out = new PrintStream(outputFile);
BufferedReader br = new BufferedReader(new FileReader(outputFile));
while((line=br.readLine())!=null){
    if(!line.contains("proc_online_system_id")){
        flag=1;                 
    }

}
if(flag==1)
    out.print("proc_online_system_id");

3 个答案:

答案 0 :(得分:1)

试试此代码

msbuild

答案 1 :(得分:1)

缓冲每个块。所以你要做的是逐行读取文件并将当前块的内容存储在StringBuilder中。遇到空行时,请附加其他数据。当您使用整个文件执行该操作时,请将StringBuilder的内容写入文件。

POST  /students/:studentNo        controllers.Application.Post(studentNo: Long)

答案 2 :(得分:1)

String line;
PrintStream out = null;
BufferedReader br = null;
try {
  out = new PrintStream(new FileOutputStream(outputFile)); 
  br = new BufferedReader(new FileReader(inputFile)); 
  while((line=br.readLine())!=null){
    if(line.trim().isEmpty()) {            
        out.println("proc_online_system_id");   //print what you want here, BEFORE printing the current line         
    }
    out.println(line);        //always print the current line
  }

} catch (IOException e) {
    System.err.println(e);
} finally { 
  try{
    out.close(); 
    br.close();
  } catch (Exception ex) {
    System.err.println(ex);
  }
}

之后不要忘记out.close();br.close();。 此解决方案仅将当前行存储在内存中,而不是Dakkaron's answer,这是正确的,但需要在写入文件之前将整个文件存储在内存中(在StringBuilder实例中)。

编辑:在Vixen的评论here is the link之后,如果您有java 7,并且您想在解决方案中使用try with resources。