输入:
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();
上面给出的参考代码会在文件末尾添加新字符串。但是我想在每条记录之后追加它。 请建议我修改。 在这种情况下我需要做什么?
答案 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)
答案 2 :(得分:1)
一旦您读到空行,您需要输出orange
和melon
行。当你到达文件的末尾时还有其他内容。
找到您可以从中开始的代码段。
使用附加内容创建一个新文件
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);