Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/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
使用BufferedReader在Java中过早出现EOF异常_Java_Url_Bufferedreader_Eof_Ioexception - Fatal编程技术网

使用BufferedReader在Java中过早出现EOF异常

使用BufferedReader在Java中过早出现EOF异常,java,url,bufferedreader,eof,ioexception,Java,Url,Bufferedreader,Eof,Ioexception,我试图将url(它只是文本)转换为字符串,并使用BufferedReader读取url。然而,我一直得到一个过早的EOF异常。这是我到目前为止所拥有的 try { URL sUrl = new URL(url); String result = ""; BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(

我试图将url(它只是文本)转换为字符串,并使用BufferedReader读取url。然而,我一直得到一个过早的EOF异常。这是我到目前为止所拥有的

 try {
        URL sUrl = new URL(url);
        String result = "";
        BufferedReader br = null;
        try {
            br = new BufferedReader(new InputStreamReader(sUrl.openStream()));
            String av;
            while ((av = br.readLine()) != null) {
                result += av;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        System.out.println(result.length());
    } catch (Exception e) {
        e.printStackTrace();
    }
此外,我还尝试实现这个解决方案,我在另一个stackoverflow线程上看到了这个解决方案

try {
        URL oracle = new URL(url);
        BufferedReader in = new BufferedReader(
                new InputStreamReader(oracle.openStream()));

        StringBuffer input = new StringBuffer();
        int BUFFER_SIZE = 2000000;
        char[] buffer = new char[BUFFER_SIZE];
        int charsRead = 0;
        while ((charsRead = in.read(buffer, 0, BUFFER_SIZE)) != -1) {
            input.append(buffer, 0, charsRead);
        }
        in.close();
        System.out.println(input.toString().length());

    } catch (Exception e) {
        e.printStackTrace();
    }
这两种方法都会导致代码的.read/.readLine部分出现相同的错误

这是stacktrace

java.io.IOException: Premature EOF
at java.base/sun.net.www.http.ChunkedInputStream.fastRead(ChunkedInputStream.java:257)
at java.base/sun.net.www.http.ChunkedInputStream.read(ChunkedInputStream.java:689)
at java.base/java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.base/sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3501)
at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.base/java.io.InputStreamReader.read(InputStreamReader.java:185)
at java.base/java.io.BufferedReader.fill(BufferedReader.java:161)
at java.base/java.io.BufferedReader.readLine(BufferedReader.java:326)
at java.base/java.io.BufferedReader.readLine(BufferedReader.java:392)
at com.github.doomsdayrs.jikan4java.ExampleClass.main(ExampleClass.java:99)

错误是什么?java.io.IOException:Premature EOFWhy不使用,例如,捕获网页并使用保存到文件?我认为如果我为每个唯一的新url创建一个新文件,可能会造成很多混乱。但我确实尝试过将url转换成一个文件,然后从文件中读取,这很有效。是否有一个很好的方式删除文件后不久,他们以高效的方式生成,我没有看它,是新的东西这样。你可以确认如果例外发生在内容的结尾,你想阅读,或它只是随机弹出在哪里在中间?如果它总是出现在内容的末尾,则可能意味着其中存在Java错误,或者concent的格式不正确。您可以尝试在try/catch块中包装read或readLine调用,并捕获IOException作为文件结束的信号