使用Java下载文件

时间:2015-08-18 10:40:21

标签: java azure

我正在尝试从此网址下载文件,但代码挂在getInputStream(); 我在浏览器中输入此URL。网址是可访问的 http://filehost.blob.core.windows.net/firmware/version.txt

它的原因是什么?

URL url = new URL("http://filehost.blob.core.windows.net/firmware/version.txt");
HttpURLConnection  urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();

InputStream inputStream = urlConnection.getInputStream();  //hang at this line

int totalSize = urlConnection.getContentLength();

2 个答案:

答案 0 :(得分:4)

阅读文件内容

<强>解
URLScanner一起使用。

<强> CODE

URL url = new URL("http://filehost.blob.core.windows.net/firmware/version.txt");
Scanner s = new Scanner(url.openStream());
while (s.hasNextLine())
    System.out.println(s.nextLine());
s.close();

<强>输出

1.016

注意
MalformedURLExceptionIOException必须为thrown或已处理。

下载文件

<强>解
使用JAVA NIO

<强> CODE

URL website = new URL("http://filehost.blob.core.windows.net/firmware/version.txt");
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("C:/temp/version.txt");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();

OUTPUT
文件已在c:\test\version.txt创建,文件大小为5个字节

注意
MalformedURLExceptionFileNotFoundExceptionIOException必须为thrown或已处理。

答案 1 :(得分:2)

我尝试了您的代码段并无法重现您的问题 - 它并不适合我。我认为你的网络(配置)可能有一些问题,你的代码会挂起,直到发生一些超时。