📄 testzip.java
字号:
import java.io.*;
public class TestZip {
private byte[] buff=new byte[1024*6];
/*------------------------------------------------------------------------------*/
public void fileToZip(String zipFileName, String inputFile) {
fileToZip(zipFileName, new File(inputFile));
}
/*--------------------------------------------------------------------------------*/
private void fileToZip(String zipFileName, File inputFile) {
try {
org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFileName)));
fileToZip(out, inputFile, inputFile.getName());
out.setComment(" ");
System.out.println("zip over");
out.close();
}
catch (FileNotFoundException e) {
System.out.println("zip unsuccessful "+e.getMessage());
}
catch (IOException e) {
System.out.println("zip unsuccessful "+e.getMessage());
}
}
/*-------------------------------------------------------------------------------------------*/
private void fileToZip(org.apache.tools.zip.ZipOutputStream out, File f, String base) {
try {
System.out.print("Read:" + f.getName());
if (f.isDirectory()) {
System.out.println(" is Directory!");
File[] fl = f.listFiles();
out.putNextEntry(new org.apache.tools.zip.ZipEntry(base +"/"));
base = base.length() == 0 ? "" : base +"/";
for (int i = 0; i < fl.length; i++) {
fileToZip(out, fl[i], base + fl[i].getName());
}
}
else {
System.out.println(" isn't Directory!");
org.apache.tools.zip.ZipEntry z=new org.apache.tools.zip.ZipEntry(base);
out.putNextEntry(z);
BufferedInputStream in=new BufferedInputStream(new FileInputStream(f));
int b;
while ((b = in.read(buff,0,1024*6)) != -1) {
out.write(buff,0,b);
}
out.closeEntry();
print(z);
in.close();
}
}
catch (FileNotFoundException e) {
System.out.println("zip unsuccessful "+e.getMessage());
}
catch (IOException e) {
System.out.println("zip unsuccessful "+e.getMessage());
}
}
/*-----------------------------------------------------------------------------------------*/
private static void print(org.apache.tools.zip.ZipEntry e){
PrintStream err = System.err;
err.print(e.getName());
if (e.getMethod() == org.apache.tools.zip.ZipEntry.DEFLATED) {
long size = e.getSize();
if (size > 0) {
long csize = e.getCompressedSize();
long ratio = ((size-csize)*100) / size;
err.println(" deflated " + ratio + "%");
}
else {
err.println(" deflated 0%");
}
}
else {
err.println(" stored 0%");
}
}
/*-----------------------------------------------------------------------------------------------------*/
public void zipToFile(String zipFileName, String outputDirectory) {
try {
org.apache.tools.zip.ZipFile zipFile = new org.apache.tools.zip.ZipFile(zipFileName);
java.util.Enumeration e = zipFile.getEntries();
org.apache.tools.zip.ZipEntry zipEntry = null;
createDirectory(outputDirectory, "");
while (e.hasMoreElements()) {
zipEntry = (org.apache.tools.zip.ZipEntry) e.nextElement();
System.out.println("unziping " + zipEntry.getName());
if (zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0, name.length() - 1);
File f = new File(outputDirectory + File.separator + name);
f.mkdir();
System.out.println("create Directory " + outputDirectory + File.separator + name);
}
else {
String fileName = zipEntry.getName();
fileName = fileName.replace('\\', '/');
if (fileName.indexOf("/") != -1){
createDirectory(outputDirectory,
fileName.substring(0, fileName.lastIndexOf("/")));
fileName=fileName.substring(fileName.lastIndexOf("/")+1,fileName.length());
}
File f = new File(outputDirectory + File.separator + zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry); FileOutputStream out=new FileOutputStream(f);
// System.out.println("get "+f.getName());
int c;
while ( (c = in.read(buff,0,1024*6)) != -1) {
out.write(buff, 0, c);
}
out.close();
in.close();
}
}
}
catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
/*------------------------------------------------------------------------------------------*/
private void createDirectory(String directory, String subDirectory) {
String dir[];
File fl = new File(directory);
try {
if (subDirectory == "" && fl.exists() != true)
fl.mkdir();
else if (subDirectory != "") {
dir = subDirectory.replace('\\', '/').split("/");
for (int i = 0; i < dir.length; i++) {
File subFile = new File(directory + File.separator + dir[i]);
if (subFile.exists() == false)
subFile.mkdir();
directory += File.separator + dir[i];
}
}
}
catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -