Java BufferedWriter停止写入
我正试图重写这本词典:按长度排序,而不是按字母顺序。我有以下代码(在main(String[]args)中):Java BufferedWriter停止写入,java,bufferedwriter,Java,Bufferedwriter,我正试图重写这本词典:按长度排序,而不是按字母顺序。我有以下代码(在main(String[]args)中): BufferedReader read=new BufferedReader(新文件读取器(新文件(DIC_read_路径)); BufferedWriter write=新的BufferedWriter(新文件写入器(DIC_写入路径),1); ArrayList toWrite=新的ArrayList(); for(int a=read.read();a!=-1;a=read.re
BufferedReader read=new BufferedReader(新文件读取器(新文件(DIC_read_路径));
BufferedWriter write=新的BufferedWriter(新文件写入器(DIC_写入路径),1);
ArrayList toWrite=新的ArrayList();
for(int a=read.read();a!=-1;a=read.read()){
字符c=(字符)a;
toWrite.add(“+c+read.readLine());
}
read.close();
Collections.sort(toWrite,新的MyComparator());
对于(int a=0;a您正在使用输入数据的随机字符:
for (int a = read.read(); a != -1; a = read.read()){
不要混合使用read()
和readLine()
调用。只需使用readLine()
并测试null
另外,要写结果,不要使用List.toString impl和讨厌的regex替换,只需在列表上循环,然后写一个单词,后跟换行符。您正在使用输入数据的随机字符:
for (int a = read.read(); a != -1; a = read.read()){
不要混合使用read()
和readLine()
调用。只需使用readLine()
并测试null
另外,要写结果,不要使用List.toString impl和讨厌的regex替换,只需在列表上循环并写一个单词,然后换行即可。我认为问题在于:
for (int a = 0; a <= 70000; a += 10000){
write.write(toWrite.subList(a, a + 10000).toString().replaceAll("[\\[,\\]]", "").replaceAll(" ", "\n"));
write.flush();
}
对于(int a=0;a我认为问题在于:
for (int a = 0; a <= 70000; a += 10000){
write.write(toWrite.subList(a, a + 10000).toString().replaceAll("[\\[,\\]]", "").replaceAll(" ", "\n"));
write.flush();
}
for(int a=0;a不使用字符(a转换为字符),但这可能是个好主意。我同意这是一个不好的做法,但这是另一个问题。真正的“缺少8”问题是缺少新行。@GáborBakos Bakos Oh。Thanks@gangqinlaohu-是,已使用字符。您的单词可能缺少第一个字符。@GáborBakos-是,但使用简单的列表查找也可以解决问题。未使用字符(a转换为字符),但这可能是个好主意。我同意这是一个不好的做法,但我认为这是另一个问题。真正的“缺失8”问题是缺少新行。@GáborBakos Bakos Oh。Thanks@gangqinlaohu-是的,已使用字符。您的单词可能缺少第一个字符。@GáborBakos-是的,但使用简单的列表查找也可以解决问题。如果查看末尾,每个“”都将替换为“\n”,因此没有write.write(“\n”)需要,但结尾没有空间。;)有8次迭代不是很有趣吗?如果你看结尾,每个“”都被“\n”替换,因此不需要写。写(“\n”),但结尾没有空间。;)有8次迭代不是很有趣吗?