资源简介
我整理了一下,把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源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- android带百分比进度条的文件上传,使
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
评论
共有 条评论