请问,jpg文件压缩成zip后,再用winrar解压后为什么不能正常显示图片

soya 05-09-22

as title,我的类对文本文件操作没有问题,但是图形文件,压缩后再解压不能显示正常的图像。请问高人问题在哪?

// 在此输入java代码
public class ZipEncoding {

private String[] fileNames;
//需压缩文件名集合

private String bundleUrl;
//zip文件的所在文件包的路径

private String zipName;
//zip的文件名

/**
*
* @param fileNames 文件名集合 以 ***.**格式
* @param zipName zip文件的文件名
* @param bundleUrl ./?????/
*/

public ZipEncoding(String[] fileNames,String zipName,
String bundleUrl){
this.fileNames = fileNames;
this.zipName = zipName +
".zip";
this.bundleUrl = bundleUrl;
}

public boolean zip() throws IOException{
boolean ok = false;
FileOutputStream f = new FileOutputStream(bundleUrl + zipName);
CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());
ZipOutputStream out =
new ZipOutputStream(
new BufferedOutputStream(csum));

try{
//TODO delete
out.setComment(
" A test of java zipping");

for(int i = 0 ; i < fileNames.length ; i ++){
if ( new File(bundleUrl + fileNames[i]).exists()){
BufferedReader in =
new BufferedReader(
new FileReader(bundleUrl + fileNames[i]));

out.putNextEntry(new ZipEntry(bundleUrl + fileNames[i]));
int c ;
while (( c = in.read()) != -1){
out.write(c);
}
in.close();
}else
continue;
}
ok = true;
}catch(Exception e){
throw new IOException(
"ZipEncoding.zip() error \n" + e.getMessage());
}finally{
out.close();
}
return ok;
}

public boolean unzip() throws IOException{
boolean ok = false;
return ok;
}

public static void main(String[] args){
try{
//String fileNames[] = {"513306020013.jpg","513306020014.jpg","513306020015.jpg"};
String fileNames[] = {
"text1.txt","text2.txt","text3.txt"};
String zipName =
"meinv";
String bundleUrl =
"E:/";
ZipEncoding zip = new ZipEncoding(fileNames,zipName,bundleUrl);
boolean ok = zip.zip();
System.out.println(
"=======zip ok=======" + ok);
}catch(Exception e){
e.printStackTrace();
}
}
}