问题描述
importjava.io.*;importjava.util.*;importjava.util.zip.*;publicclassZipCompress{publicstaticvoidmain(String[]args)throwsIOException{FileOutputStreamf=newFileOutputStream("test.zip");CheckedOutputStreamcsum=newCheckedOutputStream(f,newAdler32());ZipOutputStreamzos=newZipOutputStream(csum);BufferedOutputStreamout=newBufferedOutputStream(zos);zos.setComment("AtestofJavaZipping");for(inti=0;i<args.length;i++){//inti=0;System.out.println("Writingfile"+args[i]);BufferedReaderin=newBufferedReader(newFileReader(args[i]));zos.putNextEntry(newZipEntry(args[i]));intc;while((c=in.read())!=-1)out.write(c);//zos.putNextEntry(newZipEntry(args[i]));in.close();}out.close();//为什么如何压缩两个文件及以上时,zip文件中只有最后一个文件成功写入内容????System.out.println("Checksum:"+csum.getChecksum().getValue());System.out.println("Readingfile");FileInputStreamfi=newFileInputStream("test.zip");CheckedInputStreamcsumi=newCheckedInputStream(fi,newAdler32());ZipInputStreamin2=newZipInputStream(csumi);BufferedInputStreambis=newBufferedInputStream(in2);ZipEntryze;//System.out.println("before:"+in2.getNextEntry());//System.out.println("before2:"+in2.getNextEntry());while((ze=in2.getNextEntry())!=null)//这部分程序运行时的问题?:程序执行完Readingfile后不是顺序执行write(x)????,为什么是完成输出Readingfile后才执行下一个while???另一问题:第二个while为什么一定要嵌套在第一个while里头。{System.out.println("Readingfile:"+ze);//System.out.println("12345667");intx;while((x=bis.read())!=-1)System.out.write(x);}}}
有两个问题:1、当运行程序时,如javaZipCompresstext1.txttext2.txt时,在压缩包test.zip里只有text2.txt成功写入文件。是怎么回事。(我是在linux下运行的)2、根据程序的命令行输出,如javaZipCompresstext1.txttext2.txt。怎么是同时输出了Readingfile:text1.txtReadingfile:text2.txt然后才是text1.txt和text2.txt的内容输出呢?谢谢!