私のコードでは、最初のステップでマッチャーの結果をファイル test1.txt に書き込みます。2 番目のステップでは、test1.txt の内容を読み取り、品詞タグ付けを使用します。私の問題は、test1.txt への書き込みと読み取りが同時に機能し、output.txt に二重のエントリが発生することです。test1.txt からの読み取りが、書き込みが終了したときにのみ開始され、同時にではなく開始されるようにするには、どうすればよいですか?
while (matcher.find()) {
//create a new file and write to it during the search
try{
pWriter = new PrintWriter(new BufferedWriter(new FileWriter("E:/test/test1.txt", true)));//append any given input
pWriter.println(matcher.group()); //write the result of matcher to the new file
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
if (pWriter != null){
pWriter.flush();
pWriter.close();
}
}
System.out.println(matcher.group()); //Print the result of matcher to console
MaxentTagger tagger = new MaxentTagger("models/english-bidirectional-distsim.tagger");
FileInputStream fstream = new FileInputStream("E:/test/test1.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
//pick up sentences line by line from the file test1.txt and store it in the string sample
while((sample = br.readLine())!=null)
{
//tag the string
String tagged = tagger.tagString(sample);
FileWriter q = new FileWriter("E:/test/output.txt",true);
BufferedWriter out =new BufferedWriter(q);
//write it to the file output.txt
out.write(tagged);
out.newLine();
out.close();
}
}