java文件下载,上传,解压方法

时间:2021-07-19 16:17:27

1、文件下载(亲测可用)

private static final int BUFFER = 2 * 1024;// 缓冲区大小(2k)private boolean isSuccess = true;//成功标志
public void downFile(String urlStr, String path, String fileName) {
    OutputStream output = null;
    try {
        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        // 取得inputStream,并将流中的信息写入

        String pathName = path + fileName;// 文件存储路径

        File file = new File(pathName);
        InputStream input = conn.getInputStream();
        if (file.exists()) {
            return;
        } else {
            File dir = new File(path);
            if (!dir.exists()) {
                dir.mkdirs();
            }
            file.createNewFile();// 新建文件
            output = new FileOutputStream(file);
            int count;
            byte[] buffer = new byte[2 * 1024];
            while ((count = input.read(buffer)) != -1) {
                output.write(buffer, 0, count);
            }
            output.flush();
        }
        output.close();
    } catch (Exception e) {
        e.printStackTrace();
        isSuccess = false;
    }
}

2、文件上传

public String uploadFile(String uploadUrl, String uploadFile, String newName) {
    String LINE_END = "\r\n";     //数据结束标志
    String PREFIX = "--";        //数据前缀
    String BOUNDARY = "*****";    //边界标识
    String resultStr = "";    try {
        URL url = new URL(uploadUrl);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        // 允许Input、Output,不使用Cache
        con.setDoInput(true);
        con.setDoOutput(true);
        con.setUseCaches(false);
        // 设置传送的method=POST
        con.setRequestMethod("POST");     con.setConnectTimeout(120 * 1000);// (单位:毫秒)        con.setReadTimeout(60 * 1000);// (单位:毫秒)
        // 设置请求属性
        con.setRequestProperty("Connection", "Keep-Alive");
        con.setRequestProperty("Charset", "UTF-8");
        con.setRequestProperty("Content-Type",
            "multipart/form-data;boundary=" + BOUNDARY);        con.connect();
        // 文件输出流
        DataOutputStream ds = new DataOutputStream(con.getOutputStream());
        ds.writeBytes(PREFIX + BOUNDARY + LINE_END);
        ds.writeBytes("Content-Disposition: form-data; "
            + "name=\"file1\";filename=\"" + newName + "\"" + LINE_END);
        ds.writeBytes(LINE_END);
        // 取得文件的FileInputStream
        FileInputStream fStream = new FileInputStream(uploadFile);
        byte[] buffer = new byte[BUFFER];
        int length = -1;
        while ((length = fStream.read(buffer)) != -1) {
            ds.write(buffer, 0, length);
        }
        ds.writeBytes(LINE_END);
        ds.writeBytes(PREFIX + BOUNDARY + PREFIX + LINE_END);
        fStream.close();
        ds.flush();
        // 取得Response内容
        int resCode = con.getResponseCode();
        if (resCode == 200) {
            InputStream is = con.getInputStream();
            int ch;
            StringBuffer result = new StringBuffer();
            while ((ch = is.read()) != -1) {
                result.append((char) ch);
            }       resultStr = result.toString();
        }
        ds.close();
    } catch (MalformedURLException e) {
           e.printStackTrace();
    } catch (IOException e) {
           e.printStackTrace();
    }  return resultStr ;
}

3、文件解压(亲测可用)

public void UnZipFolder(String zipFileString, String outPathString) {
    File desDir = new File(outPathString);
    if (!desDir.exists()) {
        desDir.mkdirs();
    }
    try {
        @SuppressWarnings("resource")
        ZipFile zf = new ZipFile(zipFileString);//根据文件创建ZipFile
        //遍历压缩文件条目
        for (Enumeration<?> entries = zf.entries(); entries.hasMoreElements();) {
            ZipEntry entry = ((ZipEntry) entries.nextElement());
            //获取条目的输入流
            InputStream in = zf.getInputStream(entry);
            String str = outPathString + entry.getName();//条目路径
            str = new String(str.getBytes("8859_1"), "GB2312");
            File desFile = new File(str);
            if (!desFile.exists()) {
                File fileParentDir = desFile.getParentFile();
                if (!fileParentDir.exists()) {
                    fileParentDir.mkdirs();
                }
                desFile.createNewFile();//创建新文件
            }
            OutputStream out = new FileOutputStream(desFile);
            byte buffer[] = new byte[2 * 1024];
            int realLength;
            while ((realLength = in.read(buffer)) > 0) {
                out.write(buffer, 0, realLength);
            }
            in.close();
            out.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
        isSuccess = false;
    }
}

java文件下载,上传,解压方法的更多相关文章

  1. Java 上传解压zip文件,并且解析文件里面的excel和图片

    需求:上传一个zip文件,zip文件里面包含一个excel和很多图片,需要把excel里面的信息解析出来保存到表中,同时图片也转化成base64保存到数据库表中. PS:为了方便不同水平的开发人员阅读 ...

  2. mac通过自带的ssh连接Linux服务器并上传解压文件

    需求: 1:mac连接linux服务器 2:将mac上的文件上传到linux服务器指定位置 3:解压文件 mac上使用命令,推荐使用 iterm2 .当然,也可以使用mac自带的终端工具. 操作过程: ...

  3. java uploadify 上传组件使用方法

    !!!声明 1-3 是jsp页面所写内容   文中需要的util  参见百度云 http://pan.baidu.com/s/1kV0gqBt   如已失效 请加QQ1940978083 1.首先引入 ...

  4. java压缩包上传,解压,预览&lpar;利用editor&period;md和Jstree实现&rpar;和下载

    java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载 实现功能:zip文件上传,后台自动解压,Jstree树目录(遍历文件),editor.md预览 采用Spring+Sp ...

  5. Java ftp上传文件方法效率对比

    Java ftp上传文件方法效率对比 一.功能简介: txt文件采用ftp方式从windows传输到Linux系统: 二.ftp实现方法 (1)方法一:采用二进制流传输,设置缓冲区,速度快,50M的t ...

  6. 2013第38周日Java文件上传下载收集思考

    2013第38周日Java文件上传&下载收集思考 感觉文件上传及下载操作很常用,之前简单搜集过一些东西,没有及时学习总结,现在基本没啥印象了,今天就再次学习下,记录下自己目前知识背景下对该类问 ...

  7. Myeclipse10&period;7安装git插件并将Java项目上传到码云(github)

    注:本文来源:外匹夫的<Myeclipse10.7安装git插件并将Java项目上传到码云(github)> 一.先说说安装egit插件的步骤(安装egit不成功的原因主要是下载的egit ...

  8. 小兔Java教程 - 三分钟学会Java文件上传

    今天群里正好有人问起了Java文件上传的事情,本来这是Java里面的知识点,而我目前最主要的精力还是放在了JS的部分.不过反正也不麻烦,我就专门开一贴来聊聊Java文件上传的基本实现方法吧. 话不多说 ...

  9. linux下各种解压方法

    linux下各种格式的压缩包的压缩.解压方法.但是部分方法我没有用到,也就不全,希望大家帮我补充,我将随时修改完善,谢谢!    .tar  解包:tar xvf FileName.tar  打包:t ...

  10. 将linux上的Java代码上传到码云

    将linux上的Java代码上传到码云 1.在linux上直接输入命令获取git sudo apt-get install git 显示资源被占用,按照图中方法强制安装 2.建立与教材配套的目录结构 ...

随机推荐

  1. 七天学会ASP&period;NET MVC &lpar;四&rpar;——用户授权认证问题

    小编应各位的要求,快马加鞭,马不停蹄的终于:七天学会 Asp.Net MVC 第四篇出炉,在第四天的学习中,我们主要了学习如何在MVC中如何实现认证授权等问题,本节主要讲了验证错误时的错误值,客户端验 ...

  2. Yii2&period;0数据库查询的一些简单的操作

    User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...

  3. 中国大数据六大技术变迁记&lpar;CSDN&rpar;

    大会召开前期,特别梳理了历届大会亮点以记录中国大数据技术领域发展历程,并立足当下生态圈现状对即将召开的BDTC 2014进行展望: 追本溯源,悉大数据六大技术变迁 伴随着大数据技术大会的发展,我们亲历 ...

  4. bootstrap static popover

    jq $('.popover').show().css('position','relative');

  5. Stm32 定时器 定时时间设置及PWM频率 占空比的设置总结

    一.定时器的时钟: 当SYSCLK等于72M,APB1等于36M APB2等于72M时,定时器的时钟为72M.注意图中这句话:如果APB1/APB2预分频器=1则频率不变,否则频率x2.如果此时,AP ...

  6. Mac os 进行Android开发笔记(2)

    Mac OS X 下开发 Android  1> MAC OS Android环境搭建: 2>MAC OS  配置 Andoid ADB: 3>MAC OS 上进行Android真机 ...

  7. 运行safari提示:无法启动此程序,因为计算机中丢失 QTCF&period;dll

    解决办法: 1.去百度搜索“QTCF.dll”,找到一个靠谱的下载地址获取到该dll文件: 2.将文件放到 安装目录:Safari\Apple Application Support 下边.

  8. 【Linux基础】常用Linux命令&colon; cd&comma; cp&comma; ls&comma; mkdir&comma; mv&comma; rm&comma; su&comma; uname

    常用Linux命令:cd, cp, ls, mkdir, mv, rm, su, uname cd命令:切换当前工作目录至 dirName(目录参数) 其中 dirName 可为绝对路径或相对路径.若 ...

  9. 13Linux&lowbar;vsftpd&lowbar;Samba&lowbar;NFS实现文件共享&lowbar;TFTP

    vsftpd服务程序: 匿名开放模式 本地用户模式 虚拟用户模式 简单文件传输协议 TFTP:UDP协议,端口69 TFTP服务使用xinetd服务程序来管理. Samba文件共享服务 NFS网络文件 ...

  10. Jenkins Installing and migration

    JAVA_Zookeeper_hadoop - CSDN博客https://blog.csdn.net/wangmuming Installing Jenkins on Red Hat distrib ...