java是否可以将多个文件压缩至gzip格式?如何做? 需求:在unix系统上实现压缩和解压缩(可能会是目录的压缩).本人对于unix系统不熟悉,zip格式不知道在unxi可否???一般在unix系统上都用什么格式来进行压缩和解压缩呢?是否支持目录? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我有这方面的代码,可惜处理中文文件名时会出错。你也可以直接调用java下的jar命令来完成压缩和解压。 处理中文可以通过转16进制完成我要在程序中实现压缩解压缩的过程您的程序支持gz的目录级压缩、解压缩不?如果支持,可否发给我一份?[email protected] import java.util.*;import java.util.zip.*;import java.io.*;import javax.swing.*;public class Tests{ public static void main(String args[]) { System.out.println("请输入要保存的压缩文件名,例:test.zip:"); try { BufferedReader buffin = new BufferedReader(new InputStreamReader(System.in)); String fileSource = buffin.readLine(); while(fileSource == "" || fileSource.length() == 0) { System.out.println("输入错误,请重新输入:"); fileSource = buffin.readLine(); } File files = new File(fileSource); FileOutputStream fout = new FileOutputStream(files); CheckedOutputStream cout = new CheckedOutputStream(fout,new Adler32()); BufferedInputStream bin = null; ZipOutputStream zout = new ZipOutputStream(new BufferedOutputStream(cout)); ZipEntry ze; System.out.println("输入要压缩的文件列表,以空格;逗号分隔:"); String fileAdd = buffin.readLine(); while(fileAdd == "" || fileAdd.length() == 0) { System.out.println("输入错误,请重新输入:"); fileAdd = buffin.readLine(); } StringTokenizer fenxi = new StringTokenizer(fileAdd," ,"); while(fenxi.hasMoreTokens()) { String fs = fenxi.nextToken(); zout.putNextEntry(new ZipEntry(fs)); int c; bin = new BufferedInputStream(new FileInputStream(fs)); while((c = bin.read()) != -1) zout.write(c); bin.close(); } zout.close(); buffin.close(); System.out.println("压缩成功!"); }catch(Exception e){System.out.println("错误!");} }}编译运行没问题了,只是只能处理当前目录下的文件,加个界面,处理就方便了,参考下 public void gZip(String filePath) { try { zip(StringUtils.prepareStringZIP(),new File(filePath)); } catch (Exception e) { e.printStackTrace(); }}private void zip(String zipFilePath, File inputFile) throws Exception { ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFilePath)); zip(zos, inputFile, ""); zos.close();}private void zip(ZipOutputStream zos, File file, String base) throws Exception { if ( file.isDirectory() ) { File[] files = file.listFiles(); zos.putNextEntry(new ZipEntry(base + "/")); base = base.length() == 0 ? "" : base + "/"; for (int i = 0; i < files.length; i++) { zip(zos, files[i], base + files[i].getName()); } } else { zos.putNextEntry(new ZipEntry(base)); FileInputStream in = new FileInputStream(file); int b; while ( (b = in.read()) != -1) { zos.write(b); } in.close(); }} f.format 简单问题 关于线程池里的线程 如果在命令行中运行不同目录的类文件 jpanel里怎样放置100*100的格子问题 菜鸟问题,请高手指点 做为一个职业人,应注意的问题 为什么无法在表格中显示出数据库中的数据? 数据转发的实现,请高人看一下这样做能实现吗, 谁能给我一个在Java窗口中的Jpanel中显示一张图片的例子 一個又簡單又複雜的又很煩的問題,我願意奉上50分。 新手, 问个简单的问题 刚参加笔试回来,给点题目大侠们看看
你也可以直接调用java下的jar命令来完成压缩和解压。
我要在程序中实现压缩解压缩的过程
您的程序支持gz的目录级压缩、解压缩不?
如果支持,可否发给我一份?
[email protected]
import java.util.zip.*;
import java.io.*;
import javax.swing.*;public class Tests
{
public static void main(String args[])
{
System.out.println("请输入要保存的压缩文件名,例:test.zip:");
try
{
BufferedReader buffin = new BufferedReader(new InputStreamReader(System.in));
String fileSource = buffin.readLine();
while(fileSource == "" || fileSource.length() == 0)
{
System.out.println("输入错误,请重新输入:");
fileSource = buffin.readLine();
}
File files = new File(fileSource);
FileOutputStream fout = new FileOutputStream(files);
CheckedOutputStream cout = new CheckedOutputStream(fout,new Adler32());
BufferedInputStream bin = null;
ZipOutputStream zout = new ZipOutputStream(new BufferedOutputStream(cout));
ZipEntry ze;
System.out.println("输入要压缩的文件列表,以空格;逗号分隔:");
String fileAdd = buffin.readLine();
while(fileAdd == "" || fileAdd.length() == 0)
{
System.out.println("输入错误,请重新输入:");
fileAdd = buffin.readLine();
}
StringTokenizer fenxi = new StringTokenizer(fileAdd," ,");
while(fenxi.hasMoreTokens())
{
String fs = fenxi.nextToken();
zout.putNextEntry(new ZipEntry(fs));
int c;
bin = new BufferedInputStream(new FileInputStream(fs));
while((c = bin.read()) != -1)
zout.write(c);
bin.close();
}
zout.close();
buffin.close();
System.out.println("压缩成功!");
}catch(Exception e){System.out.println("错误!");}
}
}
编译运行没问题了,只是只能处理当前目录下的文件,
加个界面,处理就方便了,参考下
try {
zip(StringUtils.prepareStringZIP(),new File(filePath));
} catch (Exception e) {
e.printStackTrace();
}
}private void zip(String zipFilePath, File inputFile) throws Exception {
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFilePath));
zip(zos, inputFile, "");
zos.close();
}private void zip(ZipOutputStream zos, File file, String base) throws Exception {
if ( file.isDirectory() ) {
File[] files = file.listFiles();
zos.putNextEntry(new ZipEntry(base + "/"));
base = base.length() == 0 ? "" : base + "/";
for (int i = 0; i < files.length; i++) {
zip(zos, files[i], base + files[i].getName());
}
} else {
zos.putNextEntry(new ZipEntry(base));
FileInputStream in = new FileInputStream(file);
int b;
while ( (b = in.read()) != -1) {
zos.write(b);
}
in.close();
}
}