美文网首页
java从网络Url中下载文件并保存到本地

java从网络Url中下载文件并保存到本地

作者: 月影树下 | 来源:发表于2021-01-28 10:31 被阅读0次

    1.话不多说直接上代码,直接运行main方法就可以啦,url是需要下载的文件地址,1.jpg是你要保存到本地的文件名,E:\是你要保存的本地磁盘路径,

    2.实现基本原理

    <1>打开URL连接

    <2>获取输入流,读到一个字节数组中

    <3>获取文件输出流,将字节数组写入指定文件目录中

    <4>关闭流

    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    public class Test {
        /**
         * 从网络Url中下载文件
         *
         * @param urlStr
         * @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();
        }
    
    
        public static void main(String[] args) {
    
            downLoadFromUrl("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3363295869,2467511306&fm=26&gp=0.jpg",
                    "1.jpg","E:\\");
        }
    }
    
    

    相关文章

      网友评论

          本文标题:java从网络Url中下载文件并保存到本地

          本文链接:https://www.haomeiwen.com/subject/mrjttltx.html