从互联网down文件

// 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/taoyong2008/archive/2008/08/21/2805712.aspx

 

 

/**
 *
 */

/**
 * 文件名称:downLoadFile.java
 *
 *
 * 修改历史:
 */

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Vector;

import javax.imageio.ImageIO;

/**
 * 下载网络的图片
 * 使用方法:
 * 1: setDir(下载后放置的目录);savetofile(下载的目标网址)
 * 2:savetofile(下载的网址, 要存取的文件的绝对路径)
 *
 * 注意事项:当文件的大小超过buffer_size*max_buffers时会自动放弃下载,并返回false
 * 文件名称:DownFile.java
 *
 */
public class DownFile
{
 
 private static int buffer_size = 8096;// 缓冲区大小
 private static int max_buffers = 20;
 
 public static String DIR="d://";
 public static void setDir(String dirString)
 {
  DIR=dirString;
 }
 
 /**
  * 文件的大小超过buffer_size*max_buffers时会自动放弃下载,并返回false
  * 使用方法:
  * 1: setDir(下载后放置的目录);savetofile(下载的目标网址)
  * @param desturl
  * @return
  */
 public static boolean savetofile(String desturl)
 {
  return savetofile(desturl,getFileName(desturl));
 }
 /**
  * 调用savetofile(String desturl)时会使用的文件的绝对路径
  * 它会放置在DIR下面,文件名为网址的最后一个/或/后找到的文件名
  * 如果找不到//,那么就设置为unnamed
  * @param desturl
  * @return
  */
 public static String getFileName(String desturl)
 {
  int pos=desturl.lastIndexOf("/");
  int pos2=desturl.lastIndexOf("//");
  if(pos==-1)
  {
   pos=pos2;
  }
  else if(pos<pos2)
   pos=pos2;
  String filename;
  try {
   filename=desturl.substring(pos+1);
  } catch (Exception e) {
   filename="unnamed.jpg";
  }
  return DIR+filename;
 }

/**
 * 文件的大小超过buffer_size*max_buffers时会自动放弃下载,并返回false
 * @param desturl
 * 目标网址
 * @param filename
 * 存取的文件名(绝对路径)
 * @return
 */
 public static boolean savetofile(String desturl, String filename)  {
  FileOutputStream fos = null;
  BufferedInputStream bis = null;
  HttpURLConnection httpurl = null;
  URL url = null;
  byte[] buf = new byte[buffer_size];
  int size = 0;

  
  try {
   // 建立链接
   url = new URL(desturl);
   
   httpurl = (HttpURLConnection) url.openConnection();
   
  //  连接指定的资源
   httpurl.connect();
   

   // 获取网络输入流
   bis = new BufferedInputStream(httpurl.getInputStream());
   
   // 建立文件
   fos = new FileOutputStream(filename);
   Func.cout("正在获取链接[" + desturl + "]的内容.../n将其保存为文件[" + filename + "]");
   // 保存文件
   
   /**
    * 真实的filesize为 filesize*buffer_size
    */
   int fileSize=0;
   while ((size = bis.read(buf)) != -1 && fileSize<max_buffers)
   {
    fos.write(buf, 0, size);
    fileSize++;
   }
   fos.close();
   bis.close();
   httpurl.disconnect();
   if(fileSize<max_buffers)
    Func.cout("下载成功!");
   else {
    System.out.println("exceed max size, aborted!");
    return false;
   }
   
  } catch (MalformedURLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return false;
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return false;
  }
  return true;
  
 }

 public static void main(String[] args) throws IOException {

  String url = "http://www.engineeringvillage2.com.cn/engresources/images//ev2logo5.gif";
  try {// 下载存盘
   
   DownFile.savetofile(url);
  } catch (Exception e) {

   Func.cout(e.getMessage());
   Func.cout("资源[" + url + "]下载失败!!!");
  }
//  convertTo("D:/test.html");
  String html = null;

  try {// 将下载的文件读入html
   FileInputStream fis = new FileInputStream("D:/test.pg");
   int size = fis.available();
   byte b[] = new byte[size];
   if (fis.read(b, 0, size) > 0) {
    html = new String(b);
   }

  } catch (Exception e) {
   Func.cout(e.getMessage());
   Func.cout("资源[" + "D:/test.html" + "]读取失败!!!");
  }

  System.out.println(html);
 }

 private static class outs {
  public void cout(String s) {
   System.out.println(s);
  }
 }

 private static final outs Func = new outs();

 /*public static void convertTo(String path) {
  try {
   BufferedImage image = ImageIO.read(new FileInputStream(path));
   for (int i = 0; i < image.getWidth(); ++i) {
    for (int j = 0; j < image.getHeight(); ++j) {

     int rgb = image.getRGB(i, j);
     int red = (rgb >> 16) & 0xff;

     int green = (rgb >> 8) & 0xff;

     int blue = (rgb) & 0xff;

     int sum = red + blue + green;

     sum /= 3;
     rgb = rgb & (~0xffffff);
     rgb = rgb | (sum << 16);
     rgb = rgb | (sum << 8);
     rgb = rgb | (sum);

     image.setRGB(i, j, rgb);
    }
   }

   ImageIO.write(image, "jpg", new File(path));

  } catch (Exception e) {
   // TODO: handle exception
  }

 }

 public static int getRGB(int red, int green, int blue) {
  int rgb = 0;
  rgb |= blue;
  rgb |= (green << 8);
  rgb |= (red << 16);
  return rgb;
 }*/

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值