java 文件和文件夹的压缩实现
来源:互联网 发布:linux下常用软件 编辑:程序博客网 时间:2024/04/27 16:59
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ContainerTest {
static ArrayList<String> strFileArr = new ArrayList<String>();
/**
* 打印字符串列表
*/
public static void printFilePath(ArrayList<String> strFileArr)
{
System.out.println("File path is:");
Iterator<String> it = strFileArr.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
//打印文件夹下文件路径
public static void print(File filename)
{
if(filename != null){
File[] fileArray=filename.listFiles();
for (int i = 0; i < fileArray.length; i++) {
if(!fileArray[i].isDirectory()){
System.out.println(fileArray[i].toString());
}
else{
System.out.println("Is directory :\n" + fileArray[i].toString());
print(fileArray[i]);
}
}
}
}
//压缩单个文件
public static void zipFile(String filesrc, String filedes)
{
int ilast = filedes.lastIndexOf(File.separator);
byte[] buffer = new byte[1024];
int len;
try {
FileOutputStream fos = new FileOutputStream(filedes);
ZipOutputStream zos = new ZipOutputStream(fos);
String zipfileStr = filesrc.substring(ilast+1);
ZipEntry ze= new ZipEntry(zipfileStr);
zos.putNextEntry(ze);
FileInputStream in = new FileInputStream(filesrc);
while ((len = in.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
in.close();
zos.closeEntry();
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//生成文件夹下各个文件的相对路径
public static void generateFileStr(String filesrc,String srcPathDir)
{
File file = new File(filesrc);
if(file!=null){
String strTmp ="";
if(file.isDirectory()){
File[] fileArray=file.listFiles();
for (int i = 0; i < fileArray.length; i++){
strTmp = fileArray[i].toString();
if(!fileArray[i].isDirectory()){
strFileArr.add(strTmp.substring(srcPathDir.length()+1));
System.out.println(strTmp);
}
else{
generateFileStr(strTmp,srcPathDir);
}
}
}
else{
strTmp = filesrc.substring(filesrc.length()+1);
strFileArr.add(strTmp);
System.out.println(strTmp);
}
}
}
//压缩文件夹
public static void zipDir(String filesrc, String filedes)
{
System.out.println("zipDir");
File file = new File(filesrc);
if(file.isDirectory()){
generateFileStr(filesrc , filesrc);
byte[] buffer = new byte[1024];
int len;
try {
String filepath = null;
FileOutputStream fos = new FileOutputStream(filedes);
ZipOutputStream zos = new ZipOutputStream(fos);
for(int i = 0; i< strFileArr.size(); i++){
filepath = filesrc + File.separator + strFileArr.get(i);
System.out.println(filepath);
String zipfileStr =strFileArr.get(i);
System.out.println("zipDir zipfileStr :"+zipfileStr);
ZipEntry ze= new ZipEntry(zipfileStr);
zos.putNextEntry(ze);
File fileitem = new File(filepath);
System.out.println("zipDir filepath :"+filepath);
if(fileitem.isFile()){
FileInputStream in = new FileInputStream(fileitem);
while ((len = in.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
in.close();
}
else{
}
}
zos.closeEntry();
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
String zipFile = new String("D:" + File.separator + "zipFile.zip");
String srcfile = new String("E:" + File.separator +"test" );
zipDir(srcfile, zipFile);
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ContainerTest {
static ArrayList<String> strFileArr = new ArrayList<String>();
/**
* 打印字符串列表
*/
public static void printFilePath(ArrayList<String> strFileArr)
{
System.out.println("File path is:");
Iterator<String> it = strFileArr.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
//打印文件夹下文件路径
public static void print(File filename)
{
if(filename != null){
File[] fileArray=filename.listFiles();
for (int i = 0; i < fileArray.length; i++) {
if(!fileArray[i].isDirectory()){
System.out.println(fileArray[i].toString());
}
else{
System.out.println("Is directory :\n" + fileArray[i].toString());
print(fileArray[i]);
}
}
}
}
//压缩单个文件
public static void zipFile(String filesrc, String filedes)
{
int ilast = filedes.lastIndexOf(File.separator);
byte[] buffer = new byte[1024];
int len;
try {
FileOutputStream fos = new FileOutputStream(filedes);
ZipOutputStream zos = new ZipOutputStream(fos);
String zipfileStr = filesrc.substring(ilast+1);
ZipEntry ze= new ZipEntry(zipfileStr);
zos.putNextEntry(ze);
FileInputStream in = new FileInputStream(filesrc);
while ((len = in.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
in.close();
zos.closeEntry();
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//生成文件夹下各个文件的相对路径
public static void generateFileStr(String filesrc,String srcPathDir)
{
File file = new File(filesrc);
if(file!=null){
String strTmp ="";
if(file.isDirectory()){
File[] fileArray=file.listFiles();
for (int i = 0; i < fileArray.length; i++){
strTmp = fileArray[i].toString();
if(!fileArray[i].isDirectory()){
strFileArr.add(strTmp.substring(srcPathDir.length()+1));
System.out.println(strTmp);
}
else{
generateFileStr(strTmp,srcPathDir);
}
}
}
else{
strTmp = filesrc.substring(filesrc.length()+1);
strFileArr.add(strTmp);
System.out.println(strTmp);
}
}
}
//压缩文件夹
public static void zipDir(String filesrc, String filedes)
{
System.out.println("zipDir");
File file = new File(filesrc);
if(file.isDirectory()){
generateFileStr(filesrc , filesrc);
byte[] buffer = new byte[1024];
int len;
try {
String filepath = null;
FileOutputStream fos = new FileOutputStream(filedes);
ZipOutputStream zos = new ZipOutputStream(fos);
for(int i = 0; i< strFileArr.size(); i++){
filepath = filesrc + File.separator + strFileArr.get(i);
System.out.println(filepath);
String zipfileStr =strFileArr.get(i);
System.out.println("zipDir zipfileStr :"+zipfileStr);
ZipEntry ze= new ZipEntry(zipfileStr);
zos.putNextEntry(ze);
File fileitem = new File(filepath);
System.out.println("zipDir filepath :"+filepath);
if(fileitem.isFile()){
FileInputStream in = new FileInputStream(fileitem);
while ((len = in.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
in.close();
}
else{
}
}
zos.closeEntry();
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
String zipFile = new String("D:" + File.separator + "zipFile.zip");
String srcfile = new String("E:" + File.separator +"test" );
zipDir(srcfile, zipFile);
}
}
0 0
- java 文件和文件夹的压缩实现
- Java实现zip文件压缩(单个文件、文件夹以及文件和文件夹的组合压缩)
- java压缩文件夹下的所有文件和选定文件
- java压缩文件夹下的所有文件和选定文件
- Java 文件或者文件夹的压缩和解压
- java实现文件及文件夹压缩
- java实现将文件或文件夹压缩
- java实现的文件压缩和解压
- java实现文件和文件夹的复制
- java压缩文件夹/文件
- java压缩文件夹或文件的方法
- 压缩文件夹下面的所有文件和文件夹
- 用java实现的文件和文件夹拷贝和转移
- JAVA实现把指定文件夹下的所有文件压缩成zip包
- AAA JAVA实现把指定文件夹下的所有文件压缩成zip包
- JAVA实现把指定文件夹下的所有文件压缩成zip包
- JAVA实现把指定文件夹下的所有文件压缩成zip包
- JAVA实现把指定文件夹下的所有文件压缩成zip包
- HEVC 参考帧管理(RPS)
- NSOperation
- 一个Demo学完Android中所有的服务
- 【python】TCP包发送十六进制数据
- CRM2011资源管理器之复制实体或批量创建实体属性
- java 文件和文件夹的压缩实现
- 100多个Android Demo的整合
- JS图片无缝滚动
- cocos2d-x与lua用法整理
- Python 构造函数、 Python 析构函数、Python 垃圾回收机制
- C或C++如何实现基于CAN的SAE J1939协议??
- 关于安装解压版(zip)的Tomcat
- Objective-C中的@property和@synthesize用法
- Zond 265使用教程