Я пытаюсь переписать этот словарь: dictionary.txt отсортировано по длине вместо этого в алфавитном порядке. У меня есть следующий код (внутри основного (String [] арг)):BufferedWriter Stops Writing
BufferedReader read = new BufferedReader(new FileReader(new File(DIC_READ_PATH)));
BufferedWriter write= new BufferedWriter(new FileWriter(DIC_WRITE_PATH),1);
ArrayList<String> toWrite = new ArrayList<String>();
for (int a = read.read(); a != -1; a = read.read()){
char c = (char) a;
toWrite.add("" + c + read.readLine());
}
read.close();
Collections.sort(toWrite, new MyComparator());
for (int a = 0; a <= 70000; a += 10000){
write.write(toWrite.subList(a, a + 10000).toString().replaceAll("[\\[,\\]]", "").replaceAll(" ", "\n"));
write.flush();
}
write.write(toWrite.subList(80000, toWrite.size()).toString().replaceAll("[\\[,\\]]", "").replaceAll(" ", "\n"));
write.close();
MyComparator:
public class MyComparator implements Comparator<String> {
@Override
public int compare(String arg0, String arg1) {
// TODO Auto-generated method stub
if (arg0.length() == arg1.length()){
return arg0.compareTo(arg1);
}
return arg0.length() < arg1.length() ? -1 : +1;
}
}
Он сортирует Список_массивы штрафа, но когда я пишу строки, он не пишет 8 слов. Я попытался изменить буфер на BufferedWriter и обнаружил, что помощь поменьше буферов, поэтому я помещаю буфер 1. Я нашел это: Buffered Writer Java Limit/Issues и пытался промывать каждый раз, когда я пишу и закрываю в конце (даже после этого менялся Buffer). Я по-прежнему получаю 80360 слов вместо 80368. Почему он не будет писать полный список слов? Должен ли я использовать другой BufferedWriter? Если да, то как я могу использовать его без перезаписывания того, что уже написано?
Никаких символов не потребляемых (a отбрасывается на char), но это может быть хорошей идеей. – Justin
Интересно, почему я не думал о том, чтобы перебирать список? – Justin
Я согласен, что это плохая практика, но imho это еще одна проблема. Реальная проблема «отсутствует 8» - это отсутствие новых строк. –