資源簡介
我整理了一下,把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?????????????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?????????????????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個文件信息
評論
共有 條評論