精华内容
下载资源
问答
  • java 解压文件

    2021-02-12 09:15:37
    展开全部给你找了一个 你参e5a48de588b63231313335323631343130323136353331333264623832考一下吧:...import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;im...

    展开全部

    给你找了一个 你参e5a48de588b63231313335323631343130323136353331333264623832考一下吧:

    package com.da.unzip;

    import java.io.BufferedInputStream;

    import java.io.BufferedOutputStream;

    import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileNotFoundException;

    import java.io.FileOutputStream;

    import java.io.FileReader;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    import java.io.OutputStream;

    import java.io.Reader;

    import java.nio.ByteBuffer;

    import java.util.ArrayList;

    import java.util.Enumeration;

    import java.util.List;

    import java.util.zip.ZipEntry;

    import java.util.zip.ZipFile;

    public class Unzip {

    public static void main(String[] args) throws Exception {

    Unzip unzip = new Unzip();

    String zippath = "C:\\unzip\\";// /解压到的目标文件路径

    String zipDir = "C:\\data\\";// 要解压的压缩文件的存放路径

    File file = new File(zipDir);

    List list = unzip.getSubFiles(file);

    for (Object obj : list) {

    String realname = ((File)obj).getName();

    System.out.println(realname);

    int end = realname.lastIndexOf(".");

    System.out.println("要解压缩的文件名.........."+zipDir+realname);

    System.out.println("解压到的目录" +zippath+realname.substring(0, end));

    unzip.testReadZip(zippath,zipDir+realname);

    }

    }

    /*

    * 解压缩功能. 将zippath目录文件解压到unzipPath目录下. @throws Exception

    */

    public void ReadZip(String zippath, String unzipPath) throws Exception {

    ZipFile zfile = new ZipFile(unzipPath);// 生成一个zip文件对象

    System.out.println(zfile.getName());// 获取要解压的zip的文件名全路径

    Enumeration zList = zfile.entries();// 返回枚举对象

    ZipEntry ze = null;// 用于表示 ZIP 文件条目

    byte[] buf = new byte[1024];// 声明字节数组

    /**

    * 循环获取zip文件中的每一个文件

    */

    while (zList.hasMoreElements()) {

    // 从ZipFile中得到一个ZipEntry

    ze = (ZipEntry) zList.nextElement();

    if (ze.isDirectory())// 如果为目录条目,则返回 true,执行下列语句

    {

    System.out.println("Dir: " + ze.getName() + " skipped..");

    continue;

    }

    int begin = zfile.getName().lastIndexOf("\\") + 1;

    int end = zfile.getName().lastIndexOf(".");

    String zipRealName = zfile.getName().substring(begin, end);

    System.out.println("解压缩开始Extracting:"+ze.getName()+"\t"+ze.getSize()+"\t"+ze.getCompressedSize());

    // 以ZipEntry为参数得到一个InputStream,并写到OutputStream中,并加上缓冲

    OutputStream os = new BufferedOutputStream(

    new FileOutputStream(getRealFileName(zippath + "\\"

    + zipRealName, ze.getName())));

    InputStream is = new BufferedInputStream(zfile.getInputStream(ze));

    String fileName = getRealFileName(zippath, ze.getName()).getName();

    System.out.println("解压出的文件名称:" + fileName);

    int readLen = 0;

    while ((readLen = is.read(buf, 0, 1024)) != -1) {

    os.write(buf, 0, readLen);

    }

    is.close();

    os.close();

    // System.out.println("解压缩结束Extracted: "+ze.getName());

    }

    zfile.close();

    }

    /**

    * 给定根目录,返回一个相对路径所对应的实际文件名.

    *

    * @param zippath

    * 指定根目录

    * @param absFileName

    * 相对路径名,来自于ZipEntry中的name

    * @return java.io.File 实际的文件

    */

    private File getRealFileName(String zippath, String absFileName) {

    String[] dirs = absFileName.split("/", absFileName.length());

    File ret = new File(zippath);// 创建文件对象

    if (dirs.length > 1) {

    for (int i = 0; i < dirs.length - 1; i++) {

    ret = new File(ret, dirs[i]);

    }

    }

    if (!ret.exists()) {// 检测文件是否存在

    ret.mkdirs();// 创建此抽象路径名指定的目录

    }

    ret = new File(ret, dirs[dirs.length - 1]);// 根据 ret 抽象路径名和 child

    // 路径名字符串创建一个新 File 实例

    return ret;

    }

    }

    本回答由提问者推荐

    2Q==

    已赞过

    已踩过<

    你对这个回答的评价是?

    评论

    收起

    展开全文
  • 如何解决java压缩文件乱码问题发布于 2020-3-15|复制链接在本篇文章中我们给大家分享的是一篇关于java压缩文件乱码问题的解决办法,有需要的朋友们可以学习下。用java来打包文件生成压缩文件,有两个地方会出现乱码...

    如何解决java压缩文件乱码问题

    发布于 2020-3-15|

    复制链接

    在本篇文章中我们给大家分享的是一篇关于java压缩文件乱码问题的解决办法,有需要的朋友们可以学习下。

    用java来打包文件生成压缩文件,有两个地方会出现乱码: 内容的中文乱码问题:修改sun的源码。使用开源的类库org.apache.tools.zip.ZipOutputStream和org.apache.tools.zip.ZipEntry,这两个类ant.jar中有,可以下载使用即可。

    压缩文件注释的中文乱码问题:zos.setComment("中文测试");通过使用设置编码的方法(zos.setEncoding("gbk");)发现问题,测试项目的编码方式为gbk,而默认编码是utf-8。

    org.apache.tools.zip.ZipOutputStream默认使用项目的编码方式,通过setEncoding方法改成gbk即可解决。java压缩文件代码:

    ```java

    package com.compress;

    import java.io.BufferedInputStream;

    import java.io.BufferedOutputStream;

    import java.io.DataInputStream;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import org.apache.tools.zip.ZipEntry;

    import org.apache.tools.zip.ZipOutputStream;

    public class CompressEncodingTest {

    /**

    * @param args

    * @throws Exception

    */

    public static void main(String[] args) throws Exception {

    File f = new File("中文测试.txt");

    ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(

    new FileOutputStream("zipTest.zip"), 1024));

    zos.putNextEntry(new ZipEntry("中国人.txt"));

    DataInputStream dis = new DataInputStream(new BufferedInputStream(

    new FileInputStream(f)));

    zos.putNextEntry(new ZipEntry(f.getName()));

    int c;

    while ((c = dis.read()) != -1) {

    zos.write(c);

    }

    zos.setEncoding("gbk");

    zos.setComment("中文测试");

    zos.closeEntry();

    zos.close();

    }

    }

    ```

    展开全文
  • import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Enumeration;import org.apache.tools.zip.ZipEnt...

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.util.Enumeration;

    import org.apache.tools.zip.ZipEntry;

    import org.apache.tools.zip.ZipFile;

    import org.apache.tools.zip.ZipOutputStream;

    import org.slf4j.Logger;

    import org.slf4j.LoggerFactory;

    /**

    * 压缩,解压,删除,拷贝操作。

    *

    * 注意:此类中用到的压缩类ZipEntry等都来自于org.apache.tools包而非java.util。此包在ant.jar中有。

    *

    * * @author Tony

    */

    public class FileUtil {

    protected static Logger log = LoggerFactory.getLogger(FileUtil.class);

    /**

    *

    * 压缩文件

    *

    * @param inputFileName

    * 要压缩的文件或文件夹路径,例如:c:\\a.txt,c:\\a\

    *

    * @param outputFileName

    * 输出zip文件的路径,例如:c:\\a.zip

    *

    */

    public static void zip(String inputFileName, String outputFileName)

    throws Exception {

    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(

    outputFileName));

    zip(out, new File(inputFileName), "");

    log.debug("压缩完成!");

    out.closeEntry();

    out.close();

    }

    /**

    *

    * 压缩文件

    *

    * @param out

    * org.apache.tools.zip.ZipOutputStream

    *

    * @param file

    * 待压缩的文件

    *

    * @param base

    * 压缩的根目录

    *

    */

    private static void zip(ZipOutputStream out, File file, String base)

    throws Exception {

    if (file.isDirectory()) {

    File[] fl = file.listFiles();

    base = base.length() == 0 ? "" : base + File.separator;

    for (int i = 0; i < fl.length; i++) {

    zip(out, fl[i], base + fl[i].getName());

    }

    } else {

    out.putNextEntry(new ZipEntry(base));

    log.debug("添加压缩文件:" + base);

    FileInputStream in = new FileInputStream(file);

    int b;

    while ((b = in.read()) != -1) {

    out.write(b);

    }

    in.close();

    }

    }

    /**

    *

    * 解压zip文件

    *

    * @param zipFileName

    * 待解压的zip文件路径,例如:c:\\a.zip

    *

    * @param outputDirectory

    * 解压目标文件夹,例如:c:\\a\

    *

    */

    public static void unZip(String zipFileName, String outputDirectory)

    throws Exception {

    ZipFile zipFile = new ZipFile(zipFileName);

    try {

    Enumeration> e = zipFile.getEntries();

    ZipEntry zipEntry = null;

    createDirectory(outputDirectory, "");

    while (e.hasMoreElements()) {

    zipEntry = (ZipEntry) e.nextElement();

    log.debug("解压:" + zipEntry.getName());

    if (zipEntry.isDirectory()) {

    String name = zipEntry.getName();

    name = name.substring(0, name.length() - 1);

    File f = new File(outputDirectory + File.separator + name);

    f.mkdir();

    log.debug("创建目录:" + outputDirectory + File.separator + name);

    } else {

    String fileName = zipEntry.getName();

    fileName = fileName.replace('\\', '/');

    if (fileName.indexOf("/") != -1) {

    createDirectory(outputDirectory, fileName.substring(0,

    fileName.lastIndexOf("/")));

    fileName = fileName.substring(

    fileName.lastIndexOf("/") + 1,

    fileName.length());

    }

    File f = new File(outputDirectory + File.separator

    + zipEntry.getName());

    f.createNewFile();

    InputStream in = zipFile.getInputStream(zipEntry);

    FileOutputStream out = new FileOutputStream(f);

    byte[] by = new byte[1024];

    int c;

    while ((c = in.read(by)) != -1) {

    out.write(by, 0, c);

    }

    in.close();

    out.close();

    }

    }

    } catch (Exception ex) {

    System.out.println(ex.getMessage());

    } finally {

    zipFile.close();

    log.debug("解压完成!");

    }

    }

    }

    展开全文
  • } //构建压缩文件File File zipFile = new File(zipFileName); //初期化ZIP流 ZipOutputStream out = null; try { //构建ZIP流对象 out = new ZipOutputStream(new FileOutputStream(zipFile)); //循环处理传过来的...

    ();

    arrayList.add("D:\\zip/21000.xlsx");

    arrayList.add("D:\\zip/21004007717-File.xlsx");

    ZIPUtil.createZipFile(arrayList, "D:\\zip/aa.zip");

    }

    public static String createZipFile(ArrayListfileList,

    String zipFileName) {

    if ((fileList == null) || (fileList.size() == 0)) {

    return null;

    }

    //构建压缩文件File

    File zipFile = new File(zipFileName);

    //初期化ZIP流

    ZipOutputStream out = null;

    try {

    //构建ZIP流对象

    out = new ZipOutputStream(new FileOutputStream(zipFile));

    //循环处理传过来的集合

    for (int i = 0; i < fileList.size(); i++) {

    //获取目标文件

    File inFile = new File(fileList.get(i));

    if (inFile.exists()) {

    //定义ZipEntry对象

    ZipEntry entry = new ZipEntry(inFile.getName());

    //赋予ZIP流对象属性

    out.putNextEntry(entry);

    int len = 0;

    //缓冲

    byte[] buffer = new byte[1024];

    //构建FileInputStream流对象

    FileInputStream fis;

    fis = new FileInputStream(inFile);

    while ((len = fis.read(buffer)) > 0) {

    out.write(buffer, 0, len);

    out.flush();

    }

    //关闭closeEntry

    out.closeEntry();

    //关闭FileInputStream

    fis.close();

    }

    }

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    try {

    //最后关闭ZIP流

    out.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    return zipFileName;

    }

    }

    展开全文
  • import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; import java.util.zip.ZipEntry; import java....
  • java压缩文件或复杂文件夹,并对重复文件自动重命名java压缩文件或复杂文件夹,并对重复文件自动重命名最近整了一个压缩文件的工具类,功能:压缩文件夹,也可以压缩单独的文件压缩空文件夹(额..)目录结构是否保留可...
  • java.util.zip.ZipFile来解压zip文件,今天发现程序在读取解压文件时居然报了空指针异常,debug程序后发现时读取不到文件,产生原先是zip压缩文件中含有中文的名称,读取文件名为乱码,报找不到文件名,所以报了空...
  • Java提供了一个名为InflaterInputStream的类,该类用于解压缩压缩文件。此类的read()方法从输入流中读取单个字节的压缩数据。使用此方法解压缩压缩文件-创建一个FileInputStream对象,绕过String格式的压缩文件的...
  • zip压缩文件解压乱码问题,请使用commons.compress 的jar处理样例代码如下:public static List> getUnZip(File srcFile, File destDir) throws IOException {int BUFFER_SIZE = 2048;ZipArchiveInputStream is = ...
  • java解压RAR压缩文件

    2021-03-08 04:06:14
    最近在看java压缩,发现RAR没有公开加密算法,所以java内部没有提供api解压,当时就觉得郁闷的,结果在网上查阅了一些,发现了一个思路,就是可以调用系统的命令解压文件,下面是解压的RAR文件的方法package zip;...
  • 如果将缓冲区大小调整为文件大小,则表示只要文件大小太大而无法使用可用内存,就会出现OutOfMemoryError。使用正常的缓冲区大小让它做它的工作 - 以流式方式缓冲数据,一次缓冲一个块,而不是一次性缓冲。有关说明...
  • 需求描述:前段时间写了一篇博客《Java实现对文本文件MD5加密并ftp传送到远程主机目录》,实现了一部分的业务需求。然而有些业务可能不止传送一个文件,有时候客户需要传多个文件,原有系统并不支持,因此现在需要在...
  • 压缩文件 :toZip(String srcDir, OutputStream out,boolean KeepDirStructure)删除文件:deleteFolder(File folder)/*** 压缩成ZIP 方法1** @param srcDir* 压缩文件夹路径* @param out* 压缩文件输出流* @param ...
  • packagecom.zhl.push....importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.OutputStream;importjava.util.zip.ZipEntry;importjava.util.zip.ZipOutputStream;/*** @A...
  • java压缩文件时出现乱码怎么办发布时间:2020-06-16 10:13:04来源:亿速云阅读:79作者:Leahjava压缩文件时出现乱码怎么办?其实要解决这个问题也不难,这篇文章给出了相对应的分析和解答,下面我们一起来看看解决...
  • 关于Java解压文件的一些坑及经验分享就在本周, 测试人员找到我说现上的需求文档(zip格式的)无法预览了, 让我帮忙看看怎么回事。这个功能也并不是我做的, 于是我便先看看线上日志有没有什么错误,果不其然, 后台...
  • ZIP工具类:@Slf4jpublic classZipUtils {/*** 将多个流转成zip文件输出*@paramlistStream 文件流实体类对象*@paramfileName zip包的名称*@paramresponse*@return*/public static boolean listStreamToZipStream...
  • import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.util.Enumeration;import org.apache.tools.ant.Project;import org.apache.tools.ant.types.FileSet;import org.apa...
  • 例如,我想压缩存储在/Users/me/Desktop/image.jpg中的文件我做了这个方法:public static Boolean generateZipFile(ArrayList sourcesFilenames, String destinationDir, String zipFilename){// Create a buffer ...
  • 项目结构:Util.java内容:package ...import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.nio.charset.Ch...
  • java多线程压缩文件

    2021-02-28 06:47:34
    展开全部/**32313133353236313431303231363533e4b893e5b19e31333365663465*递归压缩文件夹**@paramsrcRootDir*压缩文件夹根目录的子路径*@paramfile*当前递归压缩的文件或目录对象*@paramzos*压缩文件存储对象*@thro...
  • 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzipaes开源项目。该项目在google code下托管,仅支持AES压缩和解压zip文件(This library only supports Win-Zip's 256-Bit AES mode.)...
  • 我从网上收到以下代码,它看起来一切正常,但我得到文件找不到异常…我在sdcard中有一个名为NewForestPonies.epub的文件许可:码:String ZipFileLocation=Environment.getExternalStorageDirectory()+"/...
  • ini 文件是Initialization File的缩写,即初始化文件,是...但在某些情况,还是要直接编辑ini才方便,一般只有很熟悉windows今天用java写了一个关于文件拷贝的小工具FileUtil.java我用了一个方法:copyFile(Fi...
  • 本文实例为大家分享了java实现文件夹解压压缩的具体代码,供大家参考,具体内容如下效果实现多个文件以及文件夹的压缩解压代码分析import java.io.File;import java.io.FileInputStream;import java.io....
  • java 压缩zip文件

    千次阅读 2021-03-17 12:58:07
    import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;...
  • java压缩文件

    2021-03-12 23:26:33
    import java.io.File;import java.io.BufferedOutputStream;import java.io.BufferedInputStream;import java.io.FileOutputStream;import java.io.FileInputStream;import java.util.zip.ZipEntry;import java.util...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 615,913
精华内容 246,365
关键字:

java解压文件

java 订阅