1.FileUtils.copyURLToFile实现:
import java.io.File; import java.net.URL; import org.apache.commons.io.FileUtils; public class DownLoadFile { /** * 网络文件下载保存 * @param url 文件url * @param dir 存储目录 * @param fileName 存储文件名 */ public static void downloadHttpUrl(String url, String dir, String fileName) { try { URL httpurl = new URL(url); File dirfile = new File(dir); if (!dirfile.exists()) { dirfile.mkdirs(); } FileUtils.copyURLToFile(httpurl, new File(dir+fileName)); } catch (Exception e) { e.printStackTrace(); } } /** * 测试 * @param args */ public static void main(String[] args) { downloadHttpUrl("http://gtms03.alicdn.com/tps/i3/TB1VF6uGFXXXXalaXXXmh5R_VXX-237-236.png", "D:/download/", "1.png"); } }
图示:
2.常规写法:
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class DownLoadFile { /** * 从网络Url中下载文件 * * @param urlstr 文件url * @param fileName 存储文件名 * @param savePath 存储路径 * @throws IOException */ public static String downLoadFromUrl(String urlStr, String fileName, String savePath) { try { URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置超时间为3秒 conn.setConnectTimeout(3 * 1000); // 防止屏蔽程序抓取而返回403错误 conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); // 得到输入流 InputStream inputStream = conn.getInputStream(); // 获取自己数组 byte[] getData = readInputStream(inputStream); // 文件保存位置 File saveDir = new File(savePath); if (!saveDir.exists()) { saveDir.mkdir(); } File file = new File(saveDir + File.separator + fileName); FileOutputStream fos = new FileOutputStream(file); fos.write(getData); if (fos != null) { fos.close(); } if (inputStream != null) { inputStream.close(); } // System.out.println("info:"+url+" download success"); return saveDir + File.separator + fileName; } catch (Exception e) { e.printStackTrace(); } return ""; } /** * 从输入流中获取字节数组 * * @param inputStream * @return * @throws IOException */ public static byte[] readInputStream(InputStream inputStream) throws IOException { byte[] buffer = new byte[1024]; int len = 0; ByteArrayOutputStream bos = new ByteArrayOutputStream(); while ((len = inputStream.read(buffer)) != -1) { bos.write(buffer, 0, len); } bos.close(); return bos.toByteArray(); } /** * 测试 * @param args */ public static void main(String[] args) { downLoadFromUrl("http://gtms03.alicdn.com/tps/i3/TB1VF6uGFXXXXalaXXXmh5R_VXX-237-236.png", "2.png", "D:/download/"); } }
图示: