java(matcher.group()) - 写入文件

时间:2013-05-19 16:30:52

标签: java string file matcher

我有代码查找特定单词之间的坐标。 现在,输出到控制台工作完美,但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)

1 个答案:

答案 0 :(得分:2)

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

在创建while后,尝试在try内移动BufferedWriter循环。然后在完成后关闭bf(在finally块中会很好)。