zoukankan      html  css  js  c++  java
  • 使用 url.openConnection、IOUtils.write 从网站下载文件与本地文件对比

    import org.apache.commons.io.FileUtils;
    import org.apache.commons.io.IOUtils;
    import org.junit.Test;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.URL;
    import java.util.Collection;
    
    public class TestMain {
    
        /**
         * 使用 url.openConnection、IOUtils.write 从网站下载文件与本地文件对比
         *
         * @throws IOException
         */
        @Test
        public void test() throws IOException {
            String httpPrefix = "https://xxx.com.cn";
            File dist = new File("C:\Users\Nihaorz\Desktop\dist");
            File distNew = new File("C:\Users\Nihaorz\Desktop\dist-new");
            if (!distNew.exists()) {
                FileUtils.forceMkdir(distNew);
            } else {
                if (!distNew.isDirectory()) {
                    throw new RuntimeException(String.format("【%s】不是文件夹,请新建【%s】文件夹", distNew.getAbsolutePath(), distNew.getAbsolutePath()));
                }
                if (distNew.listFiles().length > 0) {
                    throw new RuntimeException(String.format("【%s】文件夹不为空,请清空文件夹后再试", distNew.getAbsolutePath()));
                }
            }
            Collection<File> files = FileUtils.listFiles(dist, null, true);
            int i = 0;
            for (File file : files) {
                String filename = file.getAbsolutePath();
                // 跳过目录和.git文件夹下的内容
                if (file.isFile() && !filename.startsWith("C:\Users\Nihaorz\Desktop\dist\.git")) {
                    URL url = new URL(httpPrefix + file.getAbsolutePath().substring(dist.getAbsolutePath().length()).replace(File.separator, "/"));
                    File outFile = new File(file.getAbsolutePath().replace(dist.getAbsolutePath(), distNew.getAbsolutePath()));
                    FileUtils.forceMkdirParent(outFile);
                    try {
                        IOUtils.write(IOUtils.toByteArray(url.openConnection().getInputStream()), new FileOutputStream(outFile));
                        System.out.println(String.format("【%s】文件下载完毕", url.toString()));
                    } catch (FileNotFoundException e) {
                        System.err.println(String.format("【%s】文件不存在", url.toString()));
                        i++;
                    } catch (IOException e) {
                        e.printStackTrace();
                        i++;
                    }
                }
            }
            System.out.println(String.format("所有文件处理完毕,其中【%d】个文件下载失败", i));
        }
    
    }
  • 相关阅读:
    网页的摘要信息
    自我介绍
    DIV和SPAN的区别
    软件工程简介
    设置层的漂移
    构建之法现代软件工程
    手机验证码的相关知识
    Python2和Python3的区别
    我的第一个练习
    结对编程后传之做汉堡
  • 原文地址:https://www.cnblogs.com/nihaorz/p/15044426.html
Copyright © 2011-2022 走看看