出现空行时将一行追加到文件



>输入:

 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();

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

使用 string.replaceAll

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

演示

当您遇到包含"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();

一旦你读到一个空行,你需要输出你的orangemelon行。以及到达文件末尾时的其他内容。

找到一个可以开始的片段。

使用附加 LLINES 创建新文件

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);

最新更新