java从网络下载图片

来源:互联网 发布:网络弊大于利反方提问 编辑:程序博客网 时间:2024/05/21 17:57
package internet;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;


public class InternetTest {
 public static  void main(String [] args) {
  String urlpath = "http://a.hiphotos.baidu.com/image/pic/item/4034970a304e251fb59344f5a586c9177f3e5352.jpg";
  //图片的url
  String filePath="f://myfist.jpg";
  //图片的保存路径
  try {
   getImage(urlpath,filePath);
   
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 public static void getImage(String urlpath,String filePath) throws Exception{  //首先得到请求路径,并抛出异常
           
  
  URL url = new URL(urlpath);  //建立url 类对象,抛异常
  HttpURLConnection conn =(HttpURLConnection) url.openConnection(); //得到urlConnection对象
    
  conn.setRequestMethod("GET");     //声明请求方式
  conn.setConnectTimeout(6*100);    //设置连接超时
  if(conn.getResponseCode() == 200){
   InputStream inputStream = conn.getInputStream();   //得到一个输入流
   
     //从服务端返回数据,相对客户端为流入
   byte[] data= readInstream(inputStream);  //得到数据
   File file = new File(filePath);   //创建保存文件
   FileOutputStream outputStream = new FileOutputStream(file);//创建一个文件的输出流
    
   outputStream.write(data);  //把所有的二进值数据全部写入到我们建好的文件中
            outputStream.close();   //关闭输出流
            System.out.println("下载完成!");
  }
  }
 
 
 //读取流文件的内容
 private static byte[] readInstream(InputStream inputStream) throws Exception {
  
  ByteArrayOutputStream byteArrayOutputStream =
    new ByteArrayOutputStream(); //创建ByteArrayOutputStream 对象
  byte[] buffer = new byte[1024];   //声明缓冲区
  int length = -1;         //定义读取默认长度
   
   while((length=inputStream.read(buffer))!=-1){
    byteArrayOutputStream.write(buffer,0,length);
         //把缓存区中输出到内存中
   };
   byteArrayOutputStream.close();  //关闭输出流
   inputStream.close();          //关闭输入流
  
   return byteArrayOutputStream.toByteArray();
  //返回这个输出流的字节数组
 }
}
0 0