JDK6.0学习笔记(十五)获取HTTP网络资源

  1. /**
  2.  * 获取HTTP网络资源
  3.  * TCP通信编程适用于HTTP协议
  4.  * 一边下载一边将字节保存在 ByteArrayOutputStream中
  5.  * 最后通过toByteArray()一次性将字节数组写入文件
  6.  * 适用于下载小文件,远程文件较大时,容易导致JVM溢出
  7.  * 在目录下生成与远程文件同名的文件
  8.  * 输入命令 http://127.0.0.1/Java/1.txt
  9.  * */
  10. import java.net.URL;
  11. import java.net.HttpURLConnection;
  12. import java.io.BufferedInputStream;
  13. import java.io.FileOutputStream;
  14. import java.io.ByteArrayOutputStream;
  15. import java.io.IOException;
  16. public class TestHttpConnection {
  17.     public static void main(String[] args) {
  18.         try {
  19.             HttpURLConnection httpConnection = (HttpURLConnection) new URL(
  20.                     args[0]).openConnection();
  21.             httpConnection.setRequestMethod("GET");// 设置URL请求的方法
  22.             BufferedInputStream bis = new BufferedInputStream(httpConnection
  23.                     .getInputStream());// 返回从打开的连接读取的字节输入流
  24.                                  // 读入超过时间,会抛出SocketTimeoutException异常
  25.             ByteArrayOutputStream baos = new ByteArrayOutputStream();
  26.             byte[] buff = new byte[1024];
  27.             int bytesRead;
  28.             while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
  29.                 baos.write(buff, 0, bytesRead);
  30.             }
  31.             buff = null;
  32.             String fileName = args[0].substring(args[0].lastIndexOf("/") + 1);
  33.             FileOutputStream fos = new FileOutputStream(fileName);
  34.             fos.write(baos.toByteArray());
  35.             baos.close();
  36.             fos.close();
  37.         } catch (IOException ioe) {
  38.             ioe.printStackTrace();
  39.         }
  40.     }
  41. }

你可能感兴趣的:(JDK6.0学习笔记)