-1

我有代码可以找到特定单词之间的坐标。现在,输出到控制台完美无缺,但我喜欢将找到的匹配输出到文件我当前的代码:

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)

4

1 回答 1

2

正如所写,您通过 while 循环的每次传递打开同一个文件。每个FileWriter/BufferedWriter组合将写入一行输出。没有一个是关闭的。当它们最终被释放时,这将是一个猜谜游戏,最后一个被刷新和关闭,覆盖所有其他输出。

在创建之后,尝试将while循环移动到 ,中。然后在完成后关闭(在一个块中会很好)。tryBufferedWriterbffinally

于 2013-05-19T16:36:01.887 回答