网页图片与视频文件下载

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class URLDownFileUtils {
//测试
public static void main(String[] args) throws Exception { saveUrlAs("http://www.xinhuanet.com/video/titlepic/121022/1210224056_1564625224346_title0h.jpg", "d:/123","1210224056_1564625224346_title0h.jpg", 3096); } private static int timeOutVal=0; static{
    // 读取超时配置文件 PropertiesUtil pro
=new PropertiesUtil("timeOut.properties"); timeOutVal=Integer.parseInt(pro.readProperty("timeOut")); } /** * 使用 java根据 url 直接下载文件 * @param url 文件的url 地址 * @param basePath 保存文件的 本地地址 * @param filename 文件名称 * @param inputStreamNum 文件传输时的最大字节流 * @throws Exception */ public static boolean saveUrlAs(String url,String basePath,String filename,int inputStreamNum) throws Exception{ // File file=new File(basePath); //判断文件夹是否存在 if (!file.exists()) { //如果文件夹不存在,则创建新的的文件夹 file.mkdirs(); } FileOutputStream fileOut = null; HttpURLConnection conn = null; InputStream inputStream = null; try { // 建立链接 URL httpUrl=new URL(url); conn=(HttpURLConnection) httpUrl.openConnection(); //十分钟超时设置 conn.setConnectTimeout(timeOutVal); conn.setReadTimeout(timeOutVal);
        // 处理图片下载 403 问题 conn.setRequestProperty(
"User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); // post方式不能使用缓存 conn.setUseCaches(false); //连接指定的资源 conn.connect(); //获取网络输入流 inputStream=conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(inputStream); //判断文件的保存路径后面是否以/结尾 if (!basePath.endsWith("/")) { basePath += "/"; } //写入到文件(注意文件保存路径的后面一定要加上文件的名称) fileOut = new FileOutputStream(basePath+filename); BufferedOutputStream bos = new BufferedOutputStream(fileOut); byte[] buf = new byte[inputStreamNum]; int length = bis.read(buf); //保存文件 while(length != -1) { bos.write(buf, 0, length); length = bis.read(buf); } bos.close(); bis.close(); conn.disconnect(); return true; } catch (Exception e) { e.printStackTrace(); return false; } } }

 

posted @ 2019-08-01 16:41  我爱香香  阅读(369)  评论(0编辑  收藏  举报