出现空白行时,在文件中附加一行

时间:2015-06-12 05:57:06

标签: java string file

输入:

 apple
 banana
 grapes

 apple
 banana
 grapes

 apple
 banana
 grapes

预期产出:

 apple
 banana
 grapes
 orange
 melon

 apple
 banana
 grapes
 orange
 melon

 apple
 banana
 grapes
 orange
 melon

代码:

  String newLine=null;
  PrintStream output = new PrintStream(outputFile);
   BufferedReader br = new BufferedReader(new FileReader(outputFile));
        while((newLine=br.readLine())!=null && !newLine.isEmpty()){
            if(!newLine.contains("orange")){
                    output.println("orange");

            }
            if(!newLine.contains("melon")){
                    output.println("orange");

            }


        }
        out.close();
        br.close();

上面给出的参考代码会在文件末尾添加新字符串。但是我想在每条记录之后追加它。 请建议我修改。 在这种情况下我需要做什么?

3 个答案:

答案 0 :(得分:2)

当您遇到包含"grapes"的行时,您需要为"orange""melon"附加一个新行。尝试使用此代码:

String newLine = null;
PrintStream output = new PrintStream(outputFile);
BufferedReader br = new BufferedReader(new FileReader(outputFile));
    while((newLine=br.readLine())!=null) {
        output.println(newLine);
        if (newLine.contains("grapes")) {
                output.println("orange");
                output.println("melon");
        }
    }
out.close();
br.close();

答案 1 :(得分:2)

使用string.replaceAll

string.replaceAll("(?s)(?:\\n\\n|$)", "\\norange\\nmelon\\n\\n");

DEMO

答案 2 :(得分:1)

一旦您读到空行,您需要输出orangemelon行。当你到达文件的末尾时还有其他内容。

找到您可以从中开始的代码段。

使用附加内容创建一个新文件

String newLine;
try (PrintStream output = new PrintStream("fruits.out");
        BufferedReader br = new BufferedReader(new FileReader("fruits.in"))) {
    while ((newLine = br.readLine()) != null) {
        // reached an empty line
        if (newLine.isEmpty()) {
            output.println("orange");
            output.println("melon");
        }
        output.println(newLine);
    }
    // reached end of file
    output.println("orange");
    output.println("melon");
}

修改输入文件

Path fileInOut = Paths.get("fruits.in");
Charset defaultCharset = Charset.defaultCharset();
List<String> linesIn = Files.readAllLines(fileInOut, defaultCharset);
List<String> linesOut = new ArrayList<>();
for (String line : linesIn) {
    if (line.isEmpty()) {
        linesOut.add("orange");
        linesOut.add("melon");
    }
    linesOut.add(line);
}
linesOut.add("orange");
linesOut.add("melon");
Files.write(fileInOut, linesOut, defaultCharset, StandardOpenOption.TRUNCATE_EXISTING);