• 大小: 88KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: Java
  • 标签: java  ZIP  上传  

资源简介

我整理了一下,把ZIP包的原码重新编译,不要ant.jar,将压缩和解压放在ZipTool.class包中支持中文文件名,支持针对目录压缩,做了上传后自动解压测试!特点:一、自有原码不依赖ant.jar二、支持中文文件名(压缩和解压都支持)三、支持对目录压缩

资源截图

代码片段和文件信息

package book.upload;

/**
 * 合并文件:合并由拆分文件拆分的文件
 * 要求将拆分文件放到一个文件夹中
 * 主要利用随机文件读取和文件输入输出流
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.RandomAccessFile;

import java.util.Arrays;
import java.util.StringTokenizer;

public class Combination {
    String srcDirectory = null; //拆分文件存放的目录
    String[] separatedFiles; //存放所有拆分文件名
    String[][] separatedFilesAndSize; //存放所有拆分文件名及分件大小
    int FileNum = 0; //确定文件个数
    String fileRealName = ““; //据拆分文件名确定现在原文件名

    public Combination() {
        srcDirectory = “d:\\test\\“;
    }

    /**
     *
     * @param sFileName 任一一个拆分文件名
     * @return 原文件名
     */
    private String getRealName(String sFileName) {
        StringTokenizer st = new StringTokenizer(sFileName “.“);
        return st.nextToken() + “.“ + st.nextToken();
    }

    /**
     * 取得指定拆分文件模块的文件大小
     * @param FileName 拆分的文件名
     * @return
     */
    private long getFileSize(String FileName) {
        FileName = srcDirectory + FileName;
        return (new File(FileName).length());
    }

    /**
     * 生成一些属性,做初使化
     * @param drictory 拆分文件目录
     */
    private void getFileAttribute(String drictory) {
        File file = new File(drictory);
        separatedFiles = new String[file.list().length]; //依文件数目动态生成一维数组,只有文件名
        separatedFiles = file.list();
        //依文件数目动态生成二维数组,包括文件名和文件大小
        //第一维装文件名,第二维为该文件的字节大小
        separatedFilesAndSize = new String[separatedFiles.length][2];
        Arrays.sort(separatedFiles); //排序
        FileNum = separatedFiles.length; //当前文件夹下面有多少个文件
        for (int i = 0; i < FileNum; i++) {
            separatedFilesAndSize[i][0] = separatedFiles[i]; //文件名
            separatedFilesAndSize[i][1] = String.valueOf(getFileSize(
                    separatedFiles[i])); //文件大上
        }
        fileRealName = getRealName(separatedFiles[FileNum - 1]); //取得文件分隔前的原文件名
    }

    /**
     * 合并文件:利用随机文件读写
     * @return true为成功合并文件
     */
    private boolean CombFile() {
        RandomAccessFile raf = null;
        long alreadyWrite = 0;
        FileInputStream fis = null;
        int len = 0;
        byte[] bt = new byte[1024];
        try {
            raf = new RandomAccessFile(srcDirectory + fileRealName “rw“);
            for (int i = 0; i < FileNum; i++) {
                raf.seek(alreadyWrite);
                fis = new FileInputStream(srcDirectory +
                                          separatedFilesAndSize[i][0]);
                while ((len = fis.read(bt)) > 0) {
                    raf.write(bt 0 len);
                }
                fis.close();
                alreadyWrite = alreadyWrite +
                               Long.parseLong(separatedFilesAndSize[i][1]);
            }
            raf.close();
        } catch (Exception e) {
            e.printStackTrace();
            try {
                if (raf != null) {
                  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2788  2007-04-13 09:10  WEB-INF\classes\com\zip\FileUnZip.class

     目录          0  2007-10-20 11:47  WEB-INF\classes\com\zip

     目录          0  2007-10-20 11:47  WEB-INF\classes\com

     文件       4149  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\AsiExtraField.class

     文件       4281  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\ExtraFieldUtils.class

     文件       1500  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\JarMarker.class

     文件        391  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\UnixStat.class

     文件       1735  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\UnrecognizedExtraField.class

     文件       7844  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\ZipEntry.class

     文件        425  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\ZipExtraField.class

     文件       1529  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\ZipFile$BoundedInputStream.class

     文件       7067  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\ZipFile.class

     文件       1241  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\ZipLong.class

     文件      10426  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\ZipOutputStream.class

     文件       1095  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\ZipShort.class

     文件       5775  2007-10-20 13:37  WEB-INF\classes\org\apache\tools\zip\ZipTool.class

     目录          0  2007-10-20 13:40  WEB-INF\classes\org\apache\tools\zip

     目录          0  2007-10-20 13:40  WEB-INF\classes\org\apache\tools

     目录          0  2007-10-20 13:40  WEB-INF\classes\org\apache

     目录          0  2007-10-20 13:40  WEB-INF\classes\org

     目录          0  2007-10-20 13:40  WEB-INF\classes

     文件      11879  2007-04-12 09:19  WEB-INF\lib\jspsmartupload.jar

     目录          0  2007-10-20 11:47  WEB-INF\lib

     文件        287  2007-04-12 10:22  WEB-INF\web.xml

     目录          0  2007-10-20 11:47  WEB-INF

     文件       1196  2007-04-12 13:56  index.jsp

     文件       2509  2007-10-20 13:56  Jspsmart.jsp

     文件          0  2007-10-19 10:54  src\ApplicationResources.properties

     文件       4468  2007-10-19 16:00  src\book\upload\Combination.java

     文件       4506  2007-10-19 11:48  src\book\upload\DirectoryDeal.java

............此处省略42个文件信息

评论

共有 条评论