你好,最近我也遇到用java压缩和解压,向你咨询下你的解决方案什么,你是怎么用文件流方式去压缩?

你好,最近我也遇到用java压缩和解压,向你咨询下你的解决方案什么,你是怎么用文件流方式去压缩?,第1张

package com.onewaveinc.cwds.commons.utils

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、可修改压缩文件名称,默认保存于当前文件夹,点击确定等待完成即可。把压缩文件弄成文件,你可以使用解压工具进行解压,解压之后就变成文件了,解压工具有很多的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11547465.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存