- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么没有完成下载?下载几个字节后就会停止。为什么会发生这种情况?
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.URL;
import java.util.Scanner;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author prashanth
*/
public class downloadManager {
public static void main(String[] args) {
String url;
Proxy myproxy;
HttpURLConnection uc;
String downloadDir, file, filename;
byte[] data;
Scanner inp = new Scanner(System.in);
System.out.println("Enter the URL of the file to be downloaded: ");
url = inp.nextLine();
if (url.isEmpty()) {
System.out.println("URL is not provided, please enter the url and try again");
System.exit(-1);
}
try {
myproxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("172.31.102.14", 3128));
Authenticator auth = new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return (new PasswordAuthentication("edcguest", "edcguest".toCharArray()));
}
};
Authenticator.setDefault(auth);
URL u = new URL(url);
uc = (HttpURLConnection) u.openConnection(myproxy);
uc.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
downloadDir = System.getProperty("user.home") + System.getProperty("file.separator") + "Downloads" + System.getProperty("file.separator");
file = u.getFile();
filename = file.substring(file.lastIndexOf('/') + 1);
System.out.println("Waiting for connection...");
if (uc.getResponseCode() == 200) {
System.out.println("Connection OK!\nFile: " + filename + "\nFile Size: " + uc.getContentLength() + " bytes\nDownloading file...");
data = new byte[uc.getContentLength()];
int bytesRead = 0;
int offset = 0;
InputStream in = new BufferedInputStream(uc.getInputStream());
while (offset < uc.getContentLength()) {
bytesRead += in.read(data, offset, data.length - offset);
if (bytesRead == -1) {
break;
}
offset += bytesRead;
System.out.println("Finished downloading: " + bytesRead + " Bytes");
}
in.close();
if (offset != uc.getContentLength()) {
throw new IOException("Only read " + offset + " bytes. Expected " + uc.getContentLength() + " bytes");
}
System.out.println("Finishing Download...");
FileOutputStream out = new FileOutputStream(downloadDir + filename);
out.write(data);
System.out.println("Download Completed! Find the file in your Downloads folder");
out.flush();
out.close();
} else {
System.out.println("Download failed! Error: " + uc.getResponseCode());
}
} catch (Exception e) {
System.err.println("Exception: "+e.getMessage());
}
}
}
我哪里出错了? while 循环没有完全执行,代码执行停止在那里,不再继续。
编辑:这是示例
Enter the URL of the file to be downloaded:
http://psthomas.com/solutions/Liar_Truth.pdf
Waiting for connection...
Connection OK!
File: Liar_Truth.pdf
File Size: 60326 bytes
Downloading file...
Finished downloading: 3709 Bytes
Finished downloading: 8053 Bytes
Finished downloading: 12397 Bytes
Finished downloading: 13845 Bytes
Finished downloading: 16741 Bytes
Finished downloading: 20093 Bytes
Exception: Only read 74838 bytes. Expected 60326 bytes
就这样,我回到了提示符。
最佳答案
不确定这是否有帮助。我能够使用以下内容读取您的文件:
/*
From the command line use:
a) java UFile http://forum.java.sun.com ForumsHomePage.html
b) java UFile someFile.java someOtherFile.java
or create your own input and output streams and invoke the
copy(InputStream, OutputStream) method directly
*/
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
public class UFile
{
public static void main(String arg[])
throws IOException
{
InputStream is = getInputStream( arg[0] );
OutputStream os = getOutputStream( arg[1] );
long start = System.currentTimeMillis();
System.out.println( UFile.copy(is, os) + " bytes copied" );
System.out.println( System.currentTimeMillis() - start );
// new java.io.File(arg[0]).delete();
System.exit(0);
}
public static InputStream getInputStream(String fileName)
throws IOException
{
InputStream input;
if (fileName.startsWith("http:"))
{
URL url = new URL( fileName );
URLConnection connection = url.openConnection();
input = connection.getInputStream();
}
else
{
input = new FileInputStream( fileName );
}
return input;
}
public static OutputStream getOutputStream(String fileName)
throws IOException
{
return new FileOutputStream( fileName );
}
public static int copy(InputStream in, OutputStream out)
throws IOException
{
int bytesCopied = 0;
byte[] buffer = new byte[4 * 1024];
int bytes;
try
{
while ( (bytes = in.read( buffer )) != -1 )
{
out.write( buffer, 0, bytes );
bytesCopied += bytes;
}
}
finally
{
in.close();
out.close();
}
return bytesCopied;
}
}
它不使用代理,因此代码很简单。
我得到以下输出:
C:\Java>java UFile http://psthomas.com/solutions/Liar_Truth.pdf test.pdf
60326 bytes copied
无论如何,我们的想法是从工作代码开始,然后进行更改。如果它不起作用,那么您至少知道您更改了什么,并且可以在您的问题中提供更具体的信息。
关于java - java中HttpURLConnection意外断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32784434/
我正在编写一个具有以下签名的 Java 方法。 void Logger(Method method, Object[] args); 如果一个方法(例如 ABC() )调用此方法 Logger,它应该
我是 Java 新手。 我的问题是我的 Java 程序找不到我试图用作的图像文件一个 JButton。 (目前这段代码什么也没做,因为我只是得到了想要的外观第一的)。这是我的主课 代码: packag
好的,今天我在接受采访,我已经编写 Java 代码多年了。采访中说“Java 垃圾收集是一个棘手的问题,我有几个 friend 一直在努力弄清楚。你在这方面做得怎么样?”。她是想骗我吗?还是我的一生都
我的 friend 给了我一个谜语让我解开。它是这样的: There are 100 people. Each one of them, in his turn, does the following
如果我将使用 Java 5 代码的应用程序编译成字节码,生成的 .class 文件是否能够在 Java 1.4 下运行? 如果后者可以工作并且我正在尝试在我的 Java 1.4 应用程序中使用 Jav
有关于why Java doesn't support unsigned types的问题以及一些关于处理无符号类型的问题。我做了一些搜索,似乎 Scala 也不支持无符号数据类型。限制是Java和S
我只是想知道在一个 java 版本中生成的字节码是否可以在其他 java 版本上运行 最佳答案 通常,字节码无需修改即可在 较新 版本的 Java 上运行。它不会在旧版本上运行,除非您使用特殊参数 (
我有一个关于在命令提示符下执行 java 程序的基本问题。 在某些机器上我们需要指定 -cp 。 (类路径)同时执行java程序 (test为java文件名与.class文件存在于同一目录下) jav
我已经阅读 StackOverflow 有一段时间了,现在我才鼓起勇气提出问题。我今年 20 岁,目前在我的家乡(罗马尼亚克卢日-纳波卡)就读 IT 大学。足以介绍:D。 基本上,我有一家提供簿记应用
我有 public JSONObject parseXML(String xml) { JSONObject jsonObject = XML.toJSONObject(xml); r
我已经在 Java 中实现了带有动态类型的简单解释语言。不幸的是我遇到了以下问题。测试时如下代码: def main() { def ks = Map[[1, 2]].keySet()
一直提示输入 1 到 10 的数字 - 结果应将 st、rd、th 和 nd 添加到数字中。编写一个程序,提示用户输入 1 到 10 之间的任意整数,然后以序数形式显示该整数并附加后缀。 public
我有这个 DownloadFile.java 并按预期下载该文件: import java.io.*; import java.net.URL; public class DownloadFile {
我想在 GUI 上添加延迟。我放置了 2 个 for 循环,然后重新绘制了一个标签,但这 2 个 for 循环一个接一个地执行,并且标签被重新绘制到最后一个。 我能做什么? for(int i=0;
我正在对对象 Student 的列表项进行一些测试,但是我更喜欢在 java 类对象中创建硬编码列表,然后从那里提取数据,而不是连接到数据库并在结果集中选择记录。然而,自从我这样做以来已经很长时间了,
我知道对象创建分为三个部分: 声明 实例化 初始化 classA{} classB extends classA{} classA obj = new classB(1,1); 实例化 它必须使用
我有兴趣使用 GPRS 构建车辆跟踪系统。但是,我有一些问题要问以前做过此操作的人: GPRS 是最好的技术吗?人们意识到任何问题吗? 我计划使用 Java/Java EE - 有更好的技术吗? 如果
我可以通过递归方法反转数组,例如:数组={1,2,3,4,5} 数组结果={5,4,3,2,1}但我的结果是相同的数组,我不知道为什么,请帮助我。 public class Recursion { p
有这样的标准方式吗? 包括 Java源代码-测试代码- Ant 或 Maven联合单元持续集成(可能是巡航控制)ClearCase 版本控制工具部署到应用服务器 最后我希望有一个自动构建和集成环境。
我什至不知道这是否可能,我非常怀疑它是否可能,但如果可以,您能告诉我怎么做吗?我只是想知道如何从打印机打印一些文本。 有什么想法吗? 最佳答案 这里有更简单的事情。 import javax.swin
我是一名优秀的程序员,十分优秀!