资源简介
我整理了一下,把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.xm
目录 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个文件信息
相关资源
- java网上购物结算模拟(介绍了软件的
- Java UDP打洞、 穿透NAT,P2P通信成功源
- 一个简单的登录javaweb
- Java POI 导入导出Excel简单源代码
- javaWeb头像上传功能
- JavaWeb最简单粗暴的简单登录及数据库
- 两个小魔板游戏JAVA
- 基于Java的GUI界面的日历记事本
- 让WEB服务器从视频服务器获取数据流
- JAVA做的小游戏,蛮有趣的
- java实现的类似qq聊天系统
- 围栏检测 java版
- java 实现旋转的八卦
- javaSound
- Java实现的AES/CBC/NoPadding方式实现的文
- javaSwing(源码)
- 即时通信系统java
- Qrcode生成二维码Java web项目方法
- 《Java 基础入门传智播客出品》_中文
- Head First_深入浅出Java(中文第2版)
- java人物行走
- java des算法实现加密文字以及图片
- beiyou Java作业 -4
- jsp+servlet+javabean jdbc连接数据库 用户登
- java中国象棋打谱软件
- 决策树算法--java
- 朴素贝叶斯java代码
- java编写的抽象工厂迷宫,文字式,非
- java迭代器模式实现正反向遍历
- Java程序员面试笔试宝典附录答案与勘
评论
共有 条评论