Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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没有';t下载完整文件_Java_Http - Fatal编程技术网

Java没有';t下载完整文件

Java没有';t下载完整文件,java,http,Java,Http,我在从HTTP服务器下载文件时遇到了一个小问题。下面的代码只下载约30MB的文件(文件大小为52MB)。我的浏览器下载文件没有任何问题。怎么了 URL website = new URL("http://www.website.com/information.asp"); ReadableByteChannel rbc = Channels.newChannel(website.openStream()); FileOutputStream fos = new FileOutputStream(

我在从HTTP服务器下载文件时遇到了一个小问题。下面的代码只下载约30MB的文件(文件大小为52MB)。我的浏览器下载文件没有任何问题。怎么了

URL website = new URL("http://www.website.com/information.asp");
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("information.html");
fos.getChannel().transferFrom(rbc, 0, 1 << 24);
URL网站=新的URL(“http://www.website.com/information.asp");
ReadableByteChannel rbc=Channels.newChannel(website.openStream());
FileOutputStream fos=新的FileOutputStream(“information.html”);
fos.getChannel().transferFrom(rbc,0,1Java文档说明:

将字节从给定的可读字节传输到此通道的文件 频道

试图从源通道读取多达个字节 并从给定位置开始将它们写入此通道的文件。 调用此方法可能会也可能不会传输所有 请求的字节;是否这样做取决于属性 和通道状态。小于请求的字节数 如果源通道少于计数字节,则将传输 剩余,或者如果源通道为非阻塞通道且少于 计算其输入缓冲区中立即可用的字节数

URL网站=新的URL(“http://www.website.com/information.asp");
URLConnection=website.openConnection();
ReadableByteChannel rbc=Channels.newChannel(connection.getInputStream());
FileOutputStream fos=新的FileOutputStream(“information.html”);
long expectedSize=connection.getContentLength();
System.out.println(“预期大小:“+expectedSize”);
长传输尺寸=0升;
while(transferdSizefos.getChannel().transferFrom(rbc,TransferdSize,1发布其余的源代码。您在哪里关闭流?您需要关闭文件流,以便它刷新所有缓冲区。是的,看起来像是刷新问题。我在fos.getChannel()之后添加了fos.close();transferFrom(rbc,0,1(1)Eclipse的控制台中没有任何内容。如何以其他方式检查?wget下载完整文件。程序正常完成,没有问题。打印的预期大小是多少?服务器上的文件大小(字节)。您知道-“试图从源通道读取多达个字节,并从给定位置开始将它们写入此通道的文件中。”公共抽象长传输自(ReadableByteChannel src,long position,long count)工作代码:
URL website = new URL("http://www.website.com/information.asp");
URLConnection connection = website.openConnection();
ReadableByteChannel rbc = Channels.newChannel( connection.getInputStream());
FileOutputStream fos = new FileOutputStream("information.html" );
long expectedSize = connection.getContentLength();
System.out.println( "Expected size: " + expectedSize );
long transferedSize = 0L;
while( transferedSize < expectedSize ) {
   transferedSize +=
      fos.getChannel().transferFrom( rbc, transferedSize, 1 << 24 );
   System.out.println( transferedSize + " bytes received" );
}
fos.close();
        try {

        InputStream inputStream = url.openStream();
        ReadableByteChannel rbc = Channels.newChannel(inputStream);
        FileOutputStream fos = new FileOutputStream("your-pc-path");

        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        inputStream.close();

    } catch (Exception e) {
        e.printStackTrace();
    }