我有代码查找特定单词之间的坐标。 现在,输出到控制台工作完美,但id喜欢输出找到的TO FILE匹配 我目前的代码:
public class Filetostring {
public static void main(String[] args) throws FileNotFoundException, IOException {
String s = new Scanner(new File("input.txt")).useDelimiter("\\Z").next();
//System.out.println(content);
Pattern patt;
patt = Pattern.compile("\\bworld\\b|\\bsolid\\b|.(-?\\d+\\s-?\\d+\\s-?\\d+\\)\\s\\ (-?\\d+\\s-?\\d+\\s-?\\d+\\)\\s\\(-?\\d+\\s-?\\d+\\s-?\\d+).");
Matcher matcher = patt.matcher(s);
while(matcher.find())
//System.out.println(matcher.group());
try (FileWriter file2 = new FileWriter("output.txt");
BufferedWriter bf = new BufferedWriter(file2)) {
bf.write(matcher.group());
}
System.out.println("Done");
}
}
输出应为
世界
固体
(3245)(2334)( - 234)
(457)(2)(2323)
相反,当我输出到文件时,只显示第一个坐标:
(3245)(2334)( - 234)
答案 0 :(得分:2)
如上所述,您通过while循环每次传递打开相同的文件。每个FileWriter/BufferedWriter
组合将写一行输出。没有人关闭。当他们最终被释放时,它将是一个猜谜游戏,哪一个被刷新&最后关闭,覆盖所有其他输出。
在创建while
后,尝试在try
内移动BufferedWriter
循环。然后在完成后关闭bf
(在finally
块中会很好)。