所以我的输入文件有一些句子,我想要反转每个句子中的单词并保持相同的句子顺序。然后我需要打印到文件。我的问题是我的输出文件只打印我的最后一句,反之。
import java.util.*;
import java.io.*;
public class Reverser { //constructor Scanner sc = null ; public
Reverser(File file)throws FileNotFoundException, IOException {
sc = new Scanner (file); }
public void reverseLines(File outpr)throws FileNotFoundException, IOExeption{
//PrintWriter pw = new PrintWriter(outpr);
while(sc.hasNextLine()){
String sentence = sc.nextLine();
String[] words = sentence.split(" ");
ArrayList<String> wordsarraylist = new ArrayList<String>(Arrays.asList(words));
Collections.reverse(wordsarraylist);
FileWriter fw = new FileWriter(outpr);
BufferedWriter bw = new BufferedWriter(fw);
for(String str: wordsarraylist) {
bw.write(str + " ");
bw.newLine();
bw.close();
}
} }
}
答案 0 :(得分:1)
那是因为每次循环时,都会以覆盖模式重新打开文件。
在开始循环之前打开文件。
这里不要使用append选项,它只会让你不必要地打开/关闭文件。