大家好,欢迎来到IT知识分享网。
1、使用 common-io库下载文件,需要引入commons-io-2.6.jar
public static void downloadByCommonIO(String url, String saveDir, String fileName) { try { FileUtils.copyURLToFile(new URL(url), new File(saveDir, fileName)); } catch (IOException e) { e.printStackTrace(); } }
2、使用NIO下载文件,需要 jdk 1.4+
public static void downloadByNIO(String url, String saveDir, String fileName) { ReadableByteChannel rbc = null; FileOutputStream fos = null; FileChannel foutc = null; try { rbc = Channels.newChannel(new URL(url).openStream()); File file = new File(saveDir, fileName); file.getParentFile().mkdirs(); fos = new FileOutputStream(file); foutc = fos.getChannel(); foutc.transferFrom(rbc, 0, Long.MAX_VALUE); } catch (IOException e) { e.printStackTrace(); } finally { if (rbc != null) { try { rbc.close(); } catch (IOException e) { e.printStackTrace(); } } if (foutc != null) { try { foutc.close(); } catch (IOException e) { e.printStackTrace(); } } } }
3、使用NIO下载文件,需要 jdk 1.7+
try (InputStream ins = new URL(url).openStream()) { Path target = Paths.get(saveDir, fileName); Files.createDirectories(target.getParent()); Files.copy(ins, target, StandardCopyOption.REPLACE_EXISTING); } catch (IOException e) { e.printStackTrace(); }
4、使用传统io stream下载文件
public static void downloadByIO(String url, String saveDir, String fileName) { BufferedOutputStream bos = null; InputStream is = null; try { byte[] buff = new byte[8192]; is = new URL(url).openStream(); File file = new File(saveDir, fileName); file.getParentFile().mkdirs(); bos = new BufferedOutputStream(new FileOutputStream(file)); int count = 0; while ((count = is.read(buff)) != -1) { bos.write(buff, 0, count); } } catch (IOException e) { e.printStackTrace(); } finally { if (is != null) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } if (bos != null) { try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } }
5、使用Byte Array获得stream下载文件
public static void downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException{ URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置超时间为5秒 conn.setConnectTimeout(5*1000); //防止屏蔽程序抓取而返回403错误 conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); //得到输入流 InputStream input = conn.getInputStream(); //获取自己数组 byte[] getData = readInputStream(input); //文件保存位置 File saveDir = new File(savePath); if(!saveDir.exists()){ saveDir.mkdir(); } File file = new File(saveDir+File.separator+fileName); FileOutputStream output = new FileOutputStream(file); output.write(getData); if(output!=null){ output.close(); } if(input!=null){ input.close(); } System.out.println("download success!!"); } public static byte[] readInputStream(InputStream inputStream) throws IOException { byte[] buffer = new byte[10240]; int len = 0; ByteArrayOutputStream bos = new ByteArrayOutputStream(); while((len = inputStream.read(buffer)) != -1) { bos.write(buffer, 0, len); } bos.close(); return bos.toByteArray(); }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30784.html