java.io.IOException:过早的EOF

java.io.IOException:过早的EOF,java,Java,我正在尝试使用Stream下载一个xml文件,一切正常,直到xml大小超过9MB,所以出现了这个错误 java.io.IOException:过早的EOF 这是密码 BufferedInputStream bfi = null; try { bfi = new BufferedInputStream(new URL("The URL").openStream()); String name = "name.xml";

我正在尝试使用Stream下载一个xml文件,一切正常,直到xml大小超过9MB,所以出现了这个错误 java.io.IOException:过早的EOF

这是密码

BufferedInputStream bfi = null;
        try {
            bfi = new BufferedInputStream(new URL("The URL").openStream());
            String name = "name.xml";
            FileOutputStream fb = new FileOutputStream(name);
            BufferedOutputStream bout = new BufferedOutputStream(fb, 1024);
            byte[] data = new byte[1024];
            int x = 0;
            while ((x = bfi.read(data, 0, 1024)) >= 0) {
                bout.write(data, 0, x);
            }
            this.deletePhishTankDatabase(this.recreateFileName());
            ptda.insertDownloadTime(hour, day, month, year);
            bout.close();
            bfi.close();
        } catch (IOException ex) {
            Logger.getLogger(PhishTankDataBase.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                bfi.close();
            } catch (IOException ex) {
                Logger.getLogger(PhishTankDataBase.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    } else {
        System.out.println("You can't do anything");
        return;
    }

问题可能是应用程序的运行速度比检索输入数据快

尝试使用分块流模式。

导致异常的原因是哪一行?你不应该忽略像这样有用的信息@你在开玩笑吗?让我们猜是最好的部分!您是否查看了数据并查看其中是否包含任何无效字符?您可能希望简化代码,去掉与流无关的任何内容。尝试将您的输入回显到输出文件,看看您得到了什么。您的XML文件中是否可能有EOF字符?或者是一些编码问题?或者大数据文件只是两个稍微小一些的文件(可以工作)连接在一起?读取块,直到数据或EOS到达。