У меня проблема с BufferedWriter. Я читаю в 50 000 слов wordlist, используя алгоритм создания и создания нового словаря, который содержит только слова. Вместо этого новый файл, содержащий любые стебли, однако он litrally содержит только:Java BufferedWriter не работает
-
Вот мой код:
public static void main(String[] args) {
BufferedReader reader=null;
BufferedWriter writer=null;
try {
writer = new BufferedWriter(new FileWriter(new File("src/newwordlist.txt")));
HashSet<String> db = new HashSet<String>();
reader = new BufferedReader(new InputStreamReader(new FileInputStream("src/wordlist"),"UTF-8"));
String word;
int i=0;
while ((word=reader.readLine())!=null) {
i++;
Stemmer s= new Stemmer();
s.addword(word);
s.stem();
String stem =s.toString();
if(!db.contains(stem)){
db.add(stem);
writer.write(stem);
//System.out.println(stem);
}
}
System.out.println("Reduced file from " + i + " words to " + db.size());
reader.close();
writer.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
Выход я получить на консоли:
Reduced file from 58110 words to 28201
Так Я знаю его работу. Ive также попытался изменить writer.write(stem);
на writer.write("hi");
, и я все равно получаю тот же результат в newwordlist.txt
. Я знаю, что это не ошибка класса Stemmer, Ive попытался вывести строку стека (где я прокомментировал код), и это привело к правильному выводу на консоль, так что ошибка должна быть у писателя, но я не понимаю, что.
Edit 1
Я упрощена закодировать в:
BufferedReader reader=null;
BufferedWriter writer=null;
try {
writer = new BufferedWriter(new FileWriter(new File("src/newwordlist.txt")));
HashSet<String> db = new HashSet<String>();
reader = new BufferedReader(new InputStreamReader(new FileInputStream("src/wordlist.txt"),"UTF-8"));
String word;
int i=0;
while ((word=reader.readLine())!=null) {
i++;
if(!db.contains(word)){
db.add(word);
writer.write("hi");
}
}
System.out.println("Reduced file from " + i + " words to " + db.size());
reader.close();
writer.close();
} catch (IOException e1) {
e1.printStackTrace();
}
Теперь я получаю консольный вывод:
Reduced file from 58110 words to 58109
Но выходной файл остается пустым
Я предлагаю вам упростить код еще дальше. Если вы * просто * откройте писателя, напишите «привет» и закройте его (не читая ничего), что происходит? –
Попробуйте использовать writer.flush() перед закрытием. –
Устранение зависимости от Stemmer полностью, и просто вывод того, что читается, имеет тот же эффект – Edd