将目录下文件压缩至多个包

package com.asia.test.TestZipFiles;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.CRC32;
import java.util.zip.CheckedOutputStream;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

public class zipfiles {

public static void main(String arg[]){
compress("E:\\test","E:\\testzip\\");
}
static final int BUFFER = 2048;
public static void compress(String filePath,String zipPath) {
File filedir = new File(filePath);
File[] files = filedir.listFiles();
if (!filedir.exists())
throw new RuntimeException(filePath + "不存在!");
try {
int k = files.length/10;
for(int i=0;i<=k;i++){
File zipFile = null;
if(i<10){
zipFile = new File(zipPath+"testzip_0"+i+".zip");
} else {
zipFile = new File(zipPath+"testzip_"+i+".zip");
}
FileOutputStream fileOutputStream = new FileOutputStream(zipFile);
CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream,new CRC32());
ZipOutputStream out = new ZipOutputStream(cos);
String basedir = "";
if(i!=k){
for(int j = i*10; j < (i+1)*10; j++){
compressFile(files[j], out);
}
} else {
for(int j = k*10; j < files.length; j++){
compressFile(files[j], out);
}
}
out.close();
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}

/** 压缩一个文件 */
private static void compressFile(File file, ZipOutputStream out) {
if (!file.exists()) {
return;
}
try {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
ZipEntry entry = new ZipEntry(file.getName());
out.putNextEntry(entry);
int count;
byte data[] = new byte[BUFFER];
while ((count = bis.read(data, 0, BUFFER)) != -1) {
out.write(data, 0, count);
}
bis.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
时间: 08-02

将目录下文件压缩至多个包的相关文章

在Eclipse配置并编译worldwind java2.1.0源码,选中Src目录下gov.nasa.worldwindx.examples包下ApplicationTemplate.java类文件run时提示“javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V”异常的解决办法

问题现象: 在Eclipse配置并编译worldwind java2.1.0源码,选中Src目录下gov.nasa.worldwindx.examples包下ApplicationTemplate.java类文件run时提示“javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V”异常. 解决办法: 1.定位到报错的方法为WWXML.java文件中的createDocumentBuilder方法: pub

关于linux系统下文件压缩归档操作命令略提

Linux下文件压缩归档操作命令:gzip/ungzip 后缀 .gz  xz/unxz       后缀 .xz  bzip2/bunzip2 后缀 .bz2  tar 用于归档并压缩  -# :#为0-9 指定压缩比 gzip -c name 压缩结果输出到标准输出  -d 解压缩  -v verbose  zcat 不解压的情况下查看压缩文件  -r 递归压缩 xz -k 保留原文件 xzcat 不解压的情况下查看原文件 tar Jcf FILE.tar.xz /DIR/TO/FILE 将

Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制

一.需求 做一个类似QQ登录似的app,将数据写到ROM文件里,并对数据进行回显. 二.截图 登录界面: 文件浏览器,查看文件的保存路径:/data/data/com.amos.datasave/files/LoginTest.txt------/data/data/(包名)/files/(文件名) 导出的文件内容: 三.实现代码 新建一个Android 工程.这里我选择的是2.1即API 7,进行开发的,其它都是默认下一步下一步即可. /datasave/res/layout/activity

多线程的对比与案例(计算目录下文件的大小)

本人使用的是mac 所以有usr目录.把以下的几种情况分别贴出来给大家分析下各自有什么优缺点! 1.顺序计算目录大小code: package jvm; import java.io.File; /** * 第一版 * 顺序计算目录大小 * @author zeuskingzb * */ public class TotalFileSizeSequential { private long getTotalSizeOfFilesInDir(File file){ if (file.isFile(

利用wget批量下载http目录下文件

原理:下载你需要down的目录页面的index.html,可能名字不是如此!!!之后用wget下载该文件里包含的所有链接! 例如:wget -vE -rLnp -nH --tries=20 --timeout=40 --wait=5 http://mirrors.163.com/gentoo/distfiles/或者简单点:wget -m http://mirrors.163.com/gentoo/distfiles/你 会得到distfiles页面的index.html文件,该文件内容当然不用

linux获取目录下文件

查看当前目录下的文件:find . -type f查看当前目录下的文件夹: find . -type d如果文件file1不为空: if [ -s file1 ];then       echo "file1 不为空"fi #!/bin/sh for f in `find ./testdir -type f`; do         if [ -s $f ];then                 echo $f is not empty.                 echo 

linux 目录下文件批量植入和删除

linux目录下文件批量植入 [[email protected] http2]# find /usr/local/http2/htdocs/ -type f|xargs sed -i "1  i <script>alert(1)</script>" 其中上面的1 为文件的第一行 i为植入 批量删除: [[email protected] ~]# find /usr/local/http2/htdocs/ -type f|xargs sed -i '/<s

Perl获取目录下文件或者包含子目录下文件

1 my $dir = "D:\\My_Work\\Temp"; 2 my @files = (); 3 4 #获取给定目录下文件 5 @files = get_dir_files($dir); 6 7 #获取给定目录以及子目录下文件 8 @files = get_dir_files_x($dir); 9 10 #获取目录下以及子目录下文件,返回的结果中包含路径 11 sub get_dir_files_x{ 12 my ($dir_p) = @_; 13 my @files = ()

使用windows API函数获取目录下所有文件名---目录下文件的扫描和处理

直接上代码 // test_max.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <windows.h> #include <Shlwapi.h> #include <iostream> #include <string> #include <vector> #pragma comment(lib,"shlwapi.lib") //注意放置的位置