Pom.xml
<!--import Zip decompression package-->
<dependency>
<groupId>ant</groupId>
<artifactid>ant </artifactId>
<version>1.6.5</version>
</dependency>
<!--import rar unpack Package-->
<dependency>
<groupId>com.github.junrar</groupId>
<artifactid>junrar</ artifactid>
<version>0.7</version>
</dependency>
Fileunziprar.ziprartofile (filename, uploaddir + "temp\\" + filename, Uploaddir + "\\staticPage")
Fileunziprar.java
Import Org.apache.tools.zip.ZipEntry;
Import Org.apache.tools.zip.ZipFile;
Import java.io.*;
Import java.util.ArrayList;
Import java.util.Enumeration;
Import java.util.List;
Import com.github.junrar.Archive;
Import Com.github.junrar.rarfile.FileHeader; public class Fileunziprar {/** * decompression * * @param sourcefile * @param tofolder * * Public St Atic string Ziprartofile (String fileName, String sourcefile, String tofolder) throws Exception {int pos = Filenam
E.lastindexof (".");
String extname = filename.substring (pos + 1). toLowerCase ();
File Pushfile = new file (sourcefile);
File Descfile = new file (Tofolder);
if (!descfile.exists ()) {descfile.mkdirs ();
//Decompression destination file String Descdir = tofolder + "\" + filename.substring (0, POS) + "\";
Start extracting zip if (extname.equals ("Zip")) {Fileunziprar.unzipfiles (pushfile, Descdir); else if (extname.equals ("rar")) {
Start decompression rar fileunziprar.unrarfile (Pushfile.getabsolutepath (), descdir);
//Verify that the folder contains index.html files, which removes String Linkurl = checkindexhtml (Descdir); if (!
Stringutil.isnotnullstr (Linkurl)) {throw new Exception ("Missing index.html in file)";
return linkurl; /** * Check for index.html * * @param strpath * * @return/public static String CHECKINDEXH
Tml (String strpath) {string linkurl = null;
list<file> filelist = new arraylist<file> (); list<file> files = getfilelist (filelist, strpath);
All files in the file directory are placed in the array if (Collectionutil.isnotempty (files)) {for (int i = 0; i < files.size (); i++) {
String fileName = Files.get (i). GetName ();
if ("index.html". Equals (FileName)) {//Determine if there is a index.html String path = Files.get (i). GetPath (); int pos = Path.lastindexof ("UpMall ");
Linkurl = path.substring (pos + 7, Path.length ());
Break
}} return Linkurl; /** * Get all Files * * @param filelist * @param strpath * @return/public static List
<File> getfilelist (list<file> filelist, String strpath) {File dir = new File (strpath); file[] files = dir.listfiles (); All files in the file directory are placed in the array if (!= null) {for (int i = 0; i < files.length; i++) {Str
ing fileName = files[i].getname (); if (Files[i].isdirectory ()) {//Judge is a file or folder Getfilelist (FileList, Files[i].getabsolutepath ());//Get File
Absolute path} else {Filelist.add (files[i]);
Continue
}} return filelist; /** * Extract to specified directory * * @param zippath * @param descdir *@author */public static void Unzipfiles (String zippath, String descdir) throws IOException {Unzipfiles (
New File (Zippath), descdir); /** * Extract files to the specified directory * * @param zipfile * @param descdir * @author isea533 * * @Suppres Swarnings ("Rawtypes") public static void Unzipfiles (File zipfile, String descdir) throws IOException {file pa
Thfile = new File (descdir);
if (!pathfile.exists ()) {pathfile.mkdirs ();
} zipfile zip = new ZipFile (ZipFile); For (Enumeration entries = Zip.getentries (); entries.hasmoreelements ();)
{ZipEntry entry = (zipentry) entries.nextelement ();
String zipentryname = Entry.getname ();
InputStream in = Zip.getinputstream (entry);
String Outpath = (Descdir + zipentryname). ReplaceAll ("\\*", "/");
; To determine if a path exists or not, create a file path filename = new file (outpath.substring 0, Outpath.lastindexof ('/')));
if (!file.exists ()) {file.mkdirs ();
//Determine if the file full path is a folder, and if it is uploaded above, do not need to extract the if (new file (Outpath). Isdirectory ()) {continue;
///output file path information System.out.println (Outpath);
OutputStream out = new FileOutputStream (Outpath);
byte[] buf1 = new byte[1024];
int Len;
while (len = In.read (buf1)) > 0) {out.write (buf1, 0, Len);
} in.close ();
Out.close ();
The/** * is extracted to the specified folder according to the original RAR path. * * @param srcrarpath original rar path * @param dstdirectorypath unpacked to the folder * * public static void Unrarfile (S Tring Srcrarpath, String dstdirectorypath) {if (!srcrarpath.tolowercase (). EndsWith (". rar")) {System. OUT.PRINTLN ("Non-RAR file").
");
Return
} File Dstdiretory = new file (Dstdirectorypath); if (!dstdiretoRy.exists ()) {////when the target directory does not exist, create the folder Dstdiretory.mkdirs ();
} Archive a = null;
try {a = new Archive (new File (Srcrarpath));
if (a!= null) {A.getmainheader (). print ();//print file information.
Fileheader fh = A.nextfileheader (); while (FH!= null) {if (Fh.isdirectory ()) {//folder File fol = new file (dstdir
Ectorypath + File.separator + fh.getfilenamestring ());
Fol.mkdirs ();
else {//File out = new file (Dstdirectorypath + file.separator
+ fh.getfilenamestring (). Trim ());
try {//The reason to write a try is because if there is an exception in it, it does not affect the continued decompression.
if (!out.exists ()) {if (!out.getparentfile (). exists ()) {//relative path may be multilevel, you may need to create a parent directory. Out.getparentfiLe (). Mkdirs ();
} out.createnewfile ();
} fileoutputstream OS = new FileOutputStream (out);
A.extractfile (FH, OS);
Os.close ();
catch (Exception ex) {ex.printstacktrace ();
} FH = A.nextfileheader ();
} a.close ();
} catch (Exception e) {e.printstacktrace ();
}
}
}