gpt4 book ai didi

java ZipOutputStream问题

转载 作者:行者123 更新时间:2023-11-29 03:56:24 28 4
gpt4 key购买 nike

我正在尝试编写一个 java ZIP util 类,如下所示:

package fdbank.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
* 解压缩工具类
* @author ggfan@amarsoft
*
*/
public class ZIPUtil {

private static void zip(File[] files, String dest) throws IOException{
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(new File("dest")));
for(File file : files){
zip(file, zos);
}
zos.close();
}

private static void zip(File file, ZipOutputStream zos) throws IOException{
byte[] buf = new byte[2048];
@SuppressWarnings("unused")
int bytes = 0;
if(file.isDirectory()){
ZipEntry entry = new ZipEntry(file.getName());
zos.putNextEntry(entry);
for(File subFile : file.listFiles()){
zip(subFile, zos);
}
zos.closeEntry();
}
FileInputStream fis = new FileInputStream(file);
System.out.println(file.getName());
ZipEntry entry = new ZipEntry(file.getName());
zos.putNextEntry(entry);
while((bytes = fis.read(buf)) != -1){
zos.write(buf);
}
zos.closeEntry();
fis.close();
}



public static void compress(int archiveType, File[] files, String dest){

}

public static void main(String[] args){
try {
System.out.println("gan !!!!");
zip(new File[]{new File("F:\\ziptest\\1.bmp")},"c:\\ziptest.zip");
} catch (IOException e) {
e.printStackTrace();
}
}
}

我运行它,没有错误,但根本没有创建 zip 文件!!!我的代码有什么问题?

最佳答案

您总是写入名为“dest”的文件并忽略名为 destString 参数(值为 c:\ziptest.zip)。

在第一个 zip() 方法的第一行将 "dest" 替换为 dest

此外:您不能忽略 fis.read() 的返回值:如果 read() 没有填充缓冲区 buf,那么您必须将其告知相应的 write() 调用:

while((bytes = fis.read(buf)) != -1){
zos.write(buf, 0, bytes);
}

关于java ZipOutputStream问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6197866/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com