Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BufferedWriter停止写入_Java_Bufferedwriter - Fatal编程技术网

Java BufferedWriter停止写入

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

我正试图重写这本词典:按长度排序,而不是按字母顺序。我有以下代码(在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.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次迭代不是很有趣吗?