import java.io.BufferedInputStream
import java.io.BufferedOutputStream
import java.io.File
import java.io.FileInputStream
import java.io.FileNotFoundException
import java.io.FileOutputStream
import java.io.IOException
import java.io.InputStream
import java.io.OutputStream
import java.util.Enumeration
import org.apache.tools.zip.ZipEntry
import org.apache.tools.zip.ZipFile
import org.apache.tools.zip.ZipOutputStream
import org.slf4j.Logger
import org.slf4j.LoggerFactory
/**
* @author fz 2010-7-30
* @Description 把指定文件夹下的所有文件压缩为指定文件夹下指定zip文件把指定文件夹下的zip文件解压到指定目录下
*/
public class ZipUtils {
private static final Logger logger = LoggerFactory.getLogger(ZipUtils.class)
private static final String SEPARATE = "/"
/**
* @Author fz 2010-7-30
* @param sourceDir 待压缩目录
* @param zipFile 压缩文件名称
* @throws Exception
* @Description 把sourceDir目录下的所有文件进行zip格式的压缩,保存为指定zip文件
*/
public static void zip(String sourceDir, String zipFile) throws Exception {
OutputStream os = null
// try {
os = new FileOutputStream(zipFile)
BufferedOutputStream bos = new BufferedOutputStream(os)
ZipOutputStream zos = new ZipOutputStream(bos)
File file = new File(sourceDir)
String basePath = null
if (file.isDirectory()) {
basePath = file.getPath()
} else {
// 直接压缩单个文件时,取父目录
basePath = file.getParent()
}
zipFile(file, basePath, zos)
zos.closeEntry()
zos.close()
// } catch (Exception e) {
// logger.error("压缩文件或文件夹" + sourceDir + "时发生异常")
// e.printStackTrace()
// }
}
/**
* @Author fz 2010-7-30
* @param source 源文件
* @param basePath 待压缩文件根目录
* @param zos 文件压缩流
* @Description 执行文件压缩成zip文件
*/
private static void zipFile(File source, String basePath, ZipOutputStream zos) {
File[] files = new File[0]
if (source.isDirectory()) {
files = source.listFiles()
} else {
files = new File[1]
files[0] = source
}
//存相对路径(相对于待压缩的根目录)
String pathName = null
byte[] buf = new byte[1024]
int length = 0
try {
for (File file : files) {
if (file.isDirectory()) {
pathName = file.getPath().substring(basePath.length() + 1) + SEPARATE
zos.putNextEntry(new ZipEntry(pathName))
zipFile(file, basePath, zos)
} else {
pathName = file.getPath().substring(basePath.length() + 1)
InputStream is = new FileInputStream(file)
BufferedInputStream bis = new BufferedInputStream(is)
zos.putNextEntry(new ZipEntry(pathName))
while ((length = bis.read(buf)) >0) {
zos.write(buf, 0, length)
}
is.close()
}
}
} catch (Exception e) {
logger.error("压缩文件" + source + "时发生异常")
e.printStackTrace()
}
}
/**
* @Author fz 2010-7-30
* @param zipfile 待解压文件
* @param destDir 解压文件存储目录
* @throws Exception
* @Description 解压zip文件,只能解压zip文件
*/
@SuppressWarnings("unchecked")
public static void unZip(String zipfile, String destDir) throws Exception {
destDir = destDir.endsWith(SEPARATE) ? destDir : destDir + SEPARATE
byte b[] = new byte[1024]
int length
ZipFile zipFile
// try {
zipFile = new ZipFile(new File(zipfile))
Enumeration enumeration = zipFile.getEntries()
ZipEntry zipEntry = null
while (enumeration.hasMoreElements()) {
zipEntry = (ZipEntry) enumeration.nextElement()
File loadFile = new File(destDir + zipEntry.getName())
if (zipEntry.isDirectory()) {
loadFile.mkdirs()
} else {
if (!loadFile.getParentFile().exists()) {
loadFile.getParentFile().mkdirs()
}
OutputStream outputStream = new FileOutputStream(loadFile)
InputStream inputStream = zipFile.getInputStream(zipEntry)
while ((length = inputStream.read(b)) >0)
outputStream.write(b, 0, length)
outputStream.close()
inputStream.close()
}
}
zipFile.close()
// } catch (IOException e) {
// logger.error("解压文件" + zipfile + "时发生异常")
// e.printStackTrace()
// }
}
}
img.onload压缩图片后怎么转成文件流后给后端是空值1、将要压缩的文件放置于同一个文件夹下;2、选定要压缩的文件;3、在其中一个文件上右击,选择添加到压缩文件;4、可修改压缩文件名称,默认保存于当前文件夹,点击确定等待完成即可。把压缩文件弄成文件,你可以使用解压工具进行解压,解压之后就变成文件了,解压工具有很多的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)