一个创业者的blog
2006-03-29 10:18
288 查看
http://www.blogjava.net/soochow_hhb/
问题一:用java.util.zip类压缩文件的时候会把文件的路径一起压到压缩包里,请教大家如何只压文件而忽略路径?
问题二:压一些较大的文件时非常容易出错(java并不报错,生成的压缩包打不开),我怀疑是因为二进制文件的问题,我是参考《java编程思想》里的例程做的(代码见下),如果是二进制问题,请教大家如何压缩二进制文件。
先谢谢啦。
问题二的代码:
public void zipFiles(String[] fileName){
try{
FileOutputStream f = new FileOutputStream("c:\\cl.zip");
CheckedOutputStream csum = new CheckedOutputStream(f,new Adler32());
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(csum));
for(int i=0;i<fileName.length;i++){
BufferedReader in = new BufferedReader(new FileReader(fileName[i]));
out.putNextEntry(new ZipEntry(fileName[i]));
int c;
while((c = in.read()) != -1){
out.write(c);
}
in.close();
}
out.close();
}catch(IOException e){
System.out.println(e.getMessage());
}
}
问题点数:100、回复次数:7
1楼 btut2004 (零散http://www.0san.com)
![](http://topic.csdn.net/Include/RankImages/user5.gif)
回复于 2004-08-27 17:15:16 得分 10
严重关注
Top
2楼 fuguanyoumc (知秋一叶)
![](http://topic.csdn.net/Include/RankImages/user2.gif)
回复于 2004-08-27 17:18:08 得分 10
深度关切,^_^
Top
3楼 boykent (一路狂飙)
![](http://topic.csdn.net/Include/RankImages/user3.gif)
回复于 2004-08-27 17:33:45 得分 10
丁页
Top
4楼 zhqi (全国第三)
![](http://topic.csdn.net/Include/RankImages/user1.gif)
回复于 2004-08-27 18:58:44 得分 0
感谢大家,第二个问题自己解决了,果然是二进制问题,BufferedReader是基于Char的,将BufferedReader替换成基于Byte的FileInputStream马上就好了,如下:
//BufferedReader in = new BufferedReader(new FileReader(fileName[i]));
FileInputStream in = new FileInputStream(new File(fileName[i]));
大伙快帮忙,还有第一个问题呢。
Top
5楼 kerry2008 (kerry)
![](http://topic.csdn.net/Include/RankImages/user2.gif)
回复于 2004-08-27 19:12:41 得分 10
我会的话一定告诉你。
Top
6楼 iceandfire (【咖啡沫】)
![](http://topic.csdn.net/Include/RankImages/user5.gif)
回复于 2004-08-27 22:11:45 得分 50
不知道兄台是否要这样的东西?
/**
* @(#) ZipFile.java
*
* Copyright 2004 Opensource Develop Team. All rights reserved.
*/
package com.opensource.zip;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* 在CSDN帖子http://community.csdn.net/Expert/topic/3316/3316352.xml?temp=.2301905中看到
* 关于ZIP压缩文件的问题,在该类中主要演示在ZIP压缩中可以不把文件路径压缩进去
*
* @author O.D.T
* @version 1.0 04/08/27
*/
public class ZipFile
{
public static void main(String[] args)
{
ArrayList fileNames = new ArrayList(); // 存放文件名,并非含有路径的名字
ArrayList files = new ArrayList(); // 存放文件对象
try
{
FileOutputStream fileOut = new FileOutputStream("E:/ZipOutOfPath.zip");
ZipOutputStream outputStream = new ZipOutputStream(fileOut);
File rootFile = new File("E:/temp");
listFile(rootFile, fileNames, files);
for (int loop=0; loop<files.size(); loop++)
{
FileInputStream fileIn = new FileInputStream((File)files.get(loop));
outputStream.putNextEntry(new ZipEntry((String)fileNames.get(loop)));
byte[] buffer = new byte[1024];
while (fileIn.read(buffer) != -1)
{
outputStream.write(buffer);
}
outputStream.closeEntry();
fileIn.close();
}
outputStream.close();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
static void listFile(File parentFile, List nameList, List fileList)
{
if (parentFile.isDirectory())
{
File[] files = parentFile.listFiles();
for (int loop=0; loop<files.length; loop++)
{
listFile(files[loop], nameList, fileList);
}
}
else
{
fileList.add(parentFile);
nameList.add(parentFile.getName());
}
}
}
Top
7楼 a10002 (A万零贰)
![](http://topic.csdn.net/Include/RankImages/user4.gif)
回复于 2004-08-27 22:46:29 得分 10
如果文件的路径是绝对路径的话!则可以使用当前目录!
不知文件的路径指的是什么?
问题一:用java.util.zip类压缩文件的时候会把文件的路径一起压到压缩包里,请教大家如何只压文件而忽略路径?
问题二:压一些较大的文件时非常容易出错(java并不报错,生成的压缩包打不开),我怀疑是因为二进制文件的问题,我是参考《java编程思想》里的例程做的(代码见下),如果是二进制问题,请教大家如何压缩二进制文件。
先谢谢啦。
问题二的代码:
public void zipFiles(String[] fileName){
try{
FileOutputStream f = new FileOutputStream("c:\\cl.zip");
CheckedOutputStream csum = new CheckedOutputStream(f,new Adler32());
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(csum));
for(int i=0;i<fileName.length;i++){
BufferedReader in = new BufferedReader(new FileReader(fileName[i]));
out.putNextEntry(new ZipEntry(fileName[i]));
int c;
while((c = in.read()) != -1){
out.write(c);
}
in.close();
}
out.close();
}catch(IOException e){
System.out.println(e.getMessage());
}
}
问题点数:100、回复次数:7
1楼 btut2004 (零散http://www.0san.com)
![](http://topic.csdn.net/Include/RankImages/user5.gif)
回复于 2004-08-27 17:15:16 得分 10
严重关注
Top
2楼 fuguanyoumc (知秋一叶)
![](http://topic.csdn.net/Include/RankImages/user2.gif)
回复于 2004-08-27 17:18:08 得分 10
深度关切,^_^
Top
3楼 boykent (一路狂飙)
![](http://topic.csdn.net/Include/RankImages/user3.gif)
回复于 2004-08-27 17:33:45 得分 10
丁页
Top
4楼 zhqi (全国第三)
![](http://topic.csdn.net/Include/RankImages/user1.gif)
回复于 2004-08-27 18:58:44 得分 0
感谢大家,第二个问题自己解决了,果然是二进制问题,BufferedReader是基于Char的,将BufferedReader替换成基于Byte的FileInputStream马上就好了,如下:
//BufferedReader in = new BufferedReader(new FileReader(fileName[i]));
FileInputStream in = new FileInputStream(new File(fileName[i]));
大伙快帮忙,还有第一个问题呢。
Top
5楼 kerry2008 (kerry)
![](http://topic.csdn.net/Include/RankImages/user2.gif)
回复于 2004-08-27 19:12:41 得分 10
我会的话一定告诉你。
Top
6楼 iceandfire (【咖啡沫】)
![](http://topic.csdn.net/Include/RankImages/user5.gif)
回复于 2004-08-27 22:11:45 得分 50
不知道兄台是否要这样的东西?
/**
* @(#) ZipFile.java
*
* Copyright 2004 Opensource Develop Team. All rights reserved.
*/
package com.opensource.zip;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* 在CSDN帖子http://community.csdn.net/Expert/topic/3316/3316352.xml?temp=.2301905中看到
* 关于ZIP压缩文件的问题,在该类中主要演示在ZIP压缩中可以不把文件路径压缩进去
*
* @author O.D.T
* @version 1.0 04/08/27
*/
public class ZipFile
{
public static void main(String[] args)
{
ArrayList fileNames = new ArrayList(); // 存放文件名,并非含有路径的名字
ArrayList files = new ArrayList(); // 存放文件对象
try
{
FileOutputStream fileOut = new FileOutputStream("E:/ZipOutOfPath.zip");
ZipOutputStream outputStream = new ZipOutputStream(fileOut);
File rootFile = new File("E:/temp");
listFile(rootFile, fileNames, files);
for (int loop=0; loop<files.size(); loop++)
{
FileInputStream fileIn = new FileInputStream((File)files.get(loop));
outputStream.putNextEntry(new ZipEntry((String)fileNames.get(loop)));
byte[] buffer = new byte[1024];
while (fileIn.read(buffer) != -1)
{
outputStream.write(buffer);
}
outputStream.closeEntry();
fileIn.close();
}
outputStream.close();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
static void listFile(File parentFile, List nameList, List fileList)
{
if (parentFile.isDirectory())
{
File[] files = parentFile.listFiles();
for (int loop=0; loop<files.length; loop++)
{
listFile(files[loop], nameList, fileList);
}
}
else
{
fileList.add(parentFile);
nameList.add(parentFile.getName());
}
}
}
Top
7楼 a10002 (A万零贰)
![](http://topic.csdn.net/Include/RankImages/user4.gif)
回复于 2004-08-27 22:46:29 得分 10
如果文件的路径是绝对路径的话!则可以使用当前目录!
不知文件的路径指的是什么?
相关文章推荐
- 一个包含了Blog使用方法的blog
- 一个讲Bagging和Boosting很清晰的blog,转载和收藏
- 搭建一个免费的,无限流量的 Blog ---- github Pages 和 Jekyll 入门
- 一个手游创业者眼中的手游十年
- 一个关于NHibernate很全面的BLOG,留着看看
- 今天给加上一个计数器,看到自己的Blog都生锈了啊!以后要好好维护!
- 创这样一个blog的初衷
- 分享一个blog,php开发的……不错
- Rails实现一个blog项目02-登录功能和session的实现
- 用django搭建一个简易blog系统(翻译)(二)
- Vim练级攻略(转自http://coolshell.cn/,一个相当不错的blog,推荐大家去看看)
- 新建了一个英文Blog
- Django一个BLOG实现(参考)(一)
- 把个人Blog作成一个成功品牌的10个策略步骤
- 创业过程犹如越狱 一个创业者的Prison Break
- opencv的一个神经网络例程(转)(转自http://blog.sina.com.cn/s/blog_61e10f020101bv94.html)
- 扔一个Blog,呵呵。
- [导入]一个ASP.NET2.0的小项目-BLOG
- 今天找了好久好久,找到了一个地方,可以自己的BLOG了,
- 又开一个BLOG了