各位大侠,小弟现在在java中压缩文件时遇到如下问题:
当我使用GZIPOutputStream时,生成压缩文件没问题,但里面的文件没有后缀,怎么解决呢?
源代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;public class zip { public static void main(String[] args) {
int number;
String fileNm;
String strykFlpth = "d:" + File.separator + "file.zip";
byte[] buf=new byte[1024];
for(int i=0; i<3; i++){
fileNm = "c:" + File.separator + "file" + String.valueOf(i) + ".doc";
try
{
FileInputStream fin = new FileInputStream(fileNm);
FileOutputStream fout=new FileOutputStream(strykFlpth);
GZIPOutputStream gzout=new GZIPOutputStream(fout);
while ((number = fin.read(buf)) != -1){
gzout.write(buf,0,number);
}
gzout.close();
fout.close();
fin.close();
}
catch(IOException e)
{
System.out.println(e.getMessage());
System.exit(1);
}
}
System.out.println("ok!");
}
}
当我使用GZIPOutputStream时,生成压缩文件没问题,但里面的文件没有后缀,怎么解决呢?
源代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;public class zip { public static void main(String[] args) {
int number;
String fileNm;
String strykFlpth = "d:" + File.separator + "file.zip";
byte[] buf=new byte[1024];
for(int i=0; i<3; i++){
fileNm = "c:" + File.separator + "file" + String.valueOf(i) + ".doc";
try
{
FileInputStream fin = new FileInputStream(fileNm);
FileOutputStream fout=new FileOutputStream(strykFlpth);
GZIPOutputStream gzout=new GZIPOutputStream(fout);
while ((number = fin.read(buf)) != -1){
gzout.write(buf,0,number);
}
gzout.close();
fout.close();
fin.close();
}
catch(IOException e)
{
System.out.println(e.getMessage());
System.exit(1);
}
}
System.out.println("ok!");
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;public class zip { public static void main(String[] args) throws FileNotFoundException, IOException { int number;
String fileNm;
String strykFlpth = "d:" + File.separator + "file.zip";
byte[] buf = new byte[1024];
FileOutputStream fout = new FileOutputStream(strykFlpth);
ZipOutputStream gzout = new ZipOutputStream(fout);
for (int i = 0; i < 3; i++) {
fileNm = "c:" + File.separator + "file" + String.valueOf(i) + ".doc";
try {
FileInputStream fin = new FileInputStream(fileNm);
gzout.putNextEntry(new ZipEntry("file" + String.valueOf(i) + ".doc"));//写新的条目
while ((number = fin.read(buf)) != -1) {
gzout.write(buf, 0, number);
}
gzout.closeEntry();//关闭当前 ZIP 条目并定位流以写入下一个条目。
fin.close();
} catch (IOException e) {
System.out.println(e.getMessage());
System.exit(1);
}
}
gzout.close();//关闭 ZIP 输出流和正在过滤的流。
fout.close();
System.out.println("ok!");
}
}