-----------------Dirtraversal.java Package com.once; Import Java.io.File; Import java.util.ArrayList; Import java.util.LinkedList; /** * Folder traversal * @author Once * */ public class Dirtraversal { //no recursion public static linkedlist<file> listlinkedfiles (String strpath) { Linkedlist<file > list = new linkedlist<file> (); File dir = new file (strpath); File file[] = Dir.listfiles (); for (int i = 0; i < file.length i++) { if (file[i].isdirectory ()) List.add (file[i)); Else System.out.println (File[i].getabsolutepath ()); } File tmp; while (!list.isempty ()) { TMP = (File) list.removefirst (); if (tmp.isdirectory ()) { File = Tmp.listfiles (); if (file = = null) continue; for (int i = 0; i < file.length i++) { if (file[i].isdirectory ()) List.add (file[i)); Else System.out.println (File[i].getabsolutepath ()); } Else { System.out.println (Tmp.getabsolutepath ()); } } return list; } Recursion public static arraylist<file> Listfiles (String strpath) { Return Refreshfilelist (strpath); } public static arraylist<file> refreshfilelist (String strpath) { arraylist<file> filelist = new arraylist<file> (); File dir = new file (strpath); file[] files = dir.listfiles (); if (Files = null) return null; for (int i = 0; i < files.length; i++) { if (Files[i].isdirectory ()) { Refreshfilelist (Files[i].getabsolutepath ()); } else { if (Files[i].getname (). toLowerCase (). EndsWith ("Zip")) Filelist.add (Files[i]); } } return filelist; } } -----------------Ziputils.java Package com.once; Import java.io.*; Import java.util.ArrayList; Import java.util.Collection; Import java.util.Enumeration; Import Java.util.zip.ZipEntry; Import java.util.zip.ZipException; Import Java.util.zip.ZipFile; Import Java.util.zip.ZipOutputStream; /** * Java utils implementation of the Zip tool * * @author Once */ public class Ziputils { private static final int buff_size = 1024 * 1024; 1M Byte /** * Batch compressed file (clip) * * @param resfilelist List of files (folders) to compress * @param compressed file generated by ZipFile * @throws IOException When the compression process is wrong */ public static void Zipfiles (Collection<file> resfilelist, File zipfile) throws IOException { Zipoutputstream zipout = new Zipoutputstream (new Bufferedoutputstream, New FileOutputStream ( ZipFile), buff_size); for (File resfile:resfilelist) { ZipFile (Resfile, ZipOut, ""); } Zipout.close (); } /** * Batch compressed file (clip) * * @param resfilelist List of files (folders) to compress * @param compressed file generated by ZipFile * @param Comment Compressed file comments * @throws IOException When the compression process is wrong */ public static void Zipfiles (Collection<file> resfilelist, File ZipFile, String comment) Throws IOException { Zipoutputstream zipout = new Zipoutputstream (new Bufferedoutputstream, New FileOutputStream ( ZipFile), buff_size); for (File resfile:resfilelist) { ZipFile (Resfile, ZipOut, ""); } Zipout.setcomment (comment); Zipout.close (); } /** * Unzip a file * * @param zipfile Compressed files * @param the target directory of FolderPath decompression * @throws IOException When the decompression process fails */ public static void Upzipfile (File zipfile, String folderpath) throws Zipexception, IOException { File Desdir = new file (FolderPath); if (!desdir.exists ()) { Desdir.mkdirs (); } ZipFile ZF = new ZipFile (ZipFile); for (enumeration<?> entries = Zf.entries (); entries.hasmoreelements ();) { ZipEntry entry = ((ZipEntry) entries.nextelement ()); InputStream in = Zf.getinputstream (entry); String str = folderpath + file.separator + entry.getname (); str = new String (str.getbytes ("8859_1"), "GB2312"); File Desfile = new file (str); if (!desfile.exists ()) { File Fileparentdir = Desfile.getparentfile (); if (!fileparentdir.exists ()) { Fileparentdir.mkdirs (); } Desfile.createnewfile (); } OutputStream out = new FileOutputStream (desfile); byte buffer[] = new Byte[buff_size]; int reallength; while ((Reallength = in.read (buffer)) > 0) { Out.write (buffer, 0, reallength); } In.close (); Out.close (); } } /** * Extract file name containing incoming text * * @param zipfile Compressed files * @param folderpath target folder * @param namecontains incoming file match name * @throws zipexception compressed format is incorrect * Thrown when @throws IOException IO error */ public static arraylist<file> Upzipselectedfile (File zipfile, String FolderPath, String namecontains) throws Zipexception, IOException { arraylist<file> filelist = new arraylist<file> (); File Desdir = new file (FolderPath); if (!desdir.exists ()) { Desdir.mkdir (); } ZipFile ZF = new ZipFile (ZipFile); for (enumeration<?> entries = Zf.entries (); entries.hasmoreelements ();) { ZipEntry entry = ((ZipEntry) entries.nextelement ()); if (Entry.getname (). Contains (Namecontains)) { InputStream in = Zf.getinputstream (entry); String str = folderpath + file.separator + entry.getname (); str = new String (str.getbytes ("8859_1"), "GB2312"); Str.getbytes ("GB2312"), "8859_1" output Str.getbytes ("8859_1"), "GB2312" input File Desfile = new file (str); if (!desfile.exists ()) { File Fileparentdir = Desfile.getparentfile (); if (!fileparentdir.exists ()) { Fileparentdir.mkdirs (); } Desfile.createnewfile (); } OutputStream out = new FileOutputStream (desfile); byte buffer[] = new Byte[buff_size]; int reallength; while ((Reallength = in.read (buffer)) > 0) { Out.write (buffer, 0, reallength); } In.close (); Out.close (); Filelist.add (Desfile); } } return filelist; } /** * Obtain compressed file list * * @param zipfile Compressed file * @return Compressed file name * @throws zipexception Compressed file format error Throws the * @throws ioexception / public static arraylist<string> getentriesnames (File zipfile) when the decompression process fails Throws Zipexception, IOException { arraylist<string> entrynames = new arraylist<string> (); Enumeration<?> entries = getentriesenumeration (ZipFile); while (entries.hasmoreelements ()) { ZipEntry entry = ((ZipEntry) entries.nextelement ()); Entrynames.add (Getentryname (Entry). GetBytes ("GB2312"), "8859_1"); } Return entrynames; } /** * Get the compressed file inside the compressed files object to obtain its properties * * @param zipfile Compressed files * @return return a list of compressed files * @throws zipexception Compressed file is incorrectly formatted * @throws IOException IO operation is incorrect */ public static enumeration<?> getentriesenumeration (File zipfile) throws Zipexception, IOException { ZipFile ZF = new ZipFile (ZipFile); return Zf.entries (); } /** * Get a comment on the compressed file object * * @param entry Compressed File object * @return The annotation of the compressed file object * @throws unsupportedencodingexception */ public static String Getentrycomment (ZipEntry entry) throws Unsupportedencodingexception { return new String (Entry.getcomment (). GetBytes ("GB2312"), "8859_1"); } /** * Get the name of the compressed file object * * @param entry Compressed File object * @return The name of the compressed file object * @throws unsupportedencodingexception */ public static String Getentryname (ZipEntry entry) throws Unsupportedencodingexception { return new String (Entry.getname (). GetBytes ("GB2312"), "8859_1"); } /** * Compress files * * @param resfile files (clips) that need to be compressed * @param zipout Compressed destination file * @param rootpath Compressed file path * @throws FileNotFoundException can not find the file when it is thrown * @throws IOException When the compression process is wrong */ private static void ZipFile (File resfile, Zipoutputstream zipout, String RootPath) Throws FileNotFoundException, IOException { RootPath = RootPath + (Rootpath.trim (). Length () = 0? "": File.separator) + Resfile.getname (); RootPath = new String (rootpath.getbytes ("8859_1"), "GB2312"); if (Resfile.isdirectory ()) { file[] filelist = Resfile.listfiles (); for (File file:filelist) { ZipFile (file, zipout, RootPath); } } else { byte buffer[] = new Byte[buff_size]; Bufferedinputstream in = new Bufferedinputstream (new FileInputStream (Resfile), Buff_size); Zipout.putnextentry (New ZipEntry (RootPath)); int reallength; while ((Reallength = in.read (buffer))!=-1) { Zipout.write (buffer, 0, reallength); } In.close (); Zipout.flush (); Zipout.closeentry (); } } } |