利用goole guava 下载文件到本地
package com.road.crawler.meizitu.crawler; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.google.common.base.Strings; import com.google.common.io.ByteStreams; import com.google.common.io.Closer; import com.google.common.io.Files; /** * 下载图片到指定目录 * * */ public class DowloadImage { private static Log log = LogFactory.getLog(DowloadImage.class); /** * 下载图片到指定目录 * * @param parentPath 指定目录 * @param imgUrl 图片地址 * @return 下载文件地址 */ public static String download(String parentPath, String imgUrl) { if(Strings.isNullOrEmpty(imgUrl) || Strings.isNullOrEmpty(parentPath)) { return null; } if(imgUrl.length() > 500) { return null; } Closer closer = Closer.create(); try { File imageDir = new File(parentPath); if(!imageDir.exists()) { imageDir.mkdirs(); } String fileName = StringUtils.substringBefore(imgUrl, "?"); fileName = StringUtils.substringAfterLast(fileName, "/"); File imageFile = new File(imageDir, fileName); InputStream in = closer.register(new URL(imgUrl).openStream()); Files.write(ByteStreams.toByteArray(in), imageFile); return imageFile.getAbsolutePath(); } catch(Exception ex) { ex.printStackTrace(); log.error("image download error :"+imgUrl); return null; } finally { try { closer.close(); } catch (IOException e) { closer = null; } } } /** * 下载图片到指定目录 * * @param parentPath 指定目录 * @param fileName 图片名称 * @param in 输入流 * @return 下载文件地址 */ public static String download(String parentPath, String fileName, InputStream in) { Closer closer = Closer.create(); try { File imageDir = new File(parentPath); if(!imageDir.exists()) { imageDir.mkdirs(); } File imageFile = new File(imageDir, fileName); Files.write(ByteStreams.toByteArray(in), imageFile); return imageFile.getAbsolutePath(); } catch(Exception ex) { ex.printStackTrace(); return null; } finally { try { closer.close(); } catch (IOException e) { closer = null; } } } public static void main(String[] args) { System.out.println(DowloadImage.download("d:\\", "https://ss3.baidu.com/-fo3dSag_xI4khGko9WTAnF6hhy/image/h%3D300/sign=09cd05db104c510fb1c4e41a50582528/b8389b504fc2d5620bbc0bfeed1190ef76c66c69.jpg")); } }