java代码实现 导出zip包,无法打开zip压缩包

java代码实现 导出zip包,无法打开zip压缩包,第1张

package comlchtest;

import javautilEnumeration;

import javautilzipZipEntry;

import javautilzipZipFile;

public class ZIP {

public static void main(String[] argv) throws Exception {

ZipFile zf = new ZipFile("E:\\wk\\LBSLEMIS201106141057\\LBSLEMIS\\test\\com\\lch\\test\\filenamezip");

for (Enumeration entries = zfentries(); entrieshasMoreElements();) {

String zipEntryName = ((ZipEntry) entriesnextElement())getName();

Systemoutprintln(zipEntryName);

}

}

}

用javad 的ZipFile类的ZipEntry方法试一下 找到ZIP里面的ZipEntry方法 读取Zip里面压缩文件的内容

有可能会引用外包

你好,我不知道你说的dzp是什么格式文件,但如果是zip的压缩文件,可以看下我的这段代码

ZipFile file = new ZipFile("d:\\1zip");

ZipEntry entry = filegetEntry("1xml"); //假如压缩包里的文件名是1xml

InputStream in=filegetInputStream(entry);

最后就是按照java中一贯的流的处理方式即可

可以不解压,zip包里的一个对象就是一个ZipEntry

找到你想要的那个ZipEntry,用文流写出来就可以了。追问通过ZipEntry,然后用流就可以读出里面的内容了吗?谢谢指点!

回答/

解压

@param root 输出目标

@param zipfile zip文件

/

protected void unzip(File root, File zipfile, String file) throws Exception {

// 解压文件不存在时返回

if (!zipfileexists()) {

return;

}

// 释放目录不存时创建

if (!rootexists()) {

rootmkdirs();

}

// 释放目录不为目录时返回

if (!rootisDirectory()) {

return;

}

FileInputStream fin = new FileInputStream(zipfile);

ZipInputStream zin = new ZipInputStream(fin);

ZipEntry entry = null;

while ((entry = zingetNextEntry()) != null) {

// if (!entrygetName()endsWith(file)) {

// continue;

// }

File tmp = new File(root, entrygetName());

if (entryisDirectory()) {

tmpmkdirs();

} else {

byte[] buff = new byte[4096];

int len = 0;

tmpgetParentFile()mkdirs();

FileOutputStream fout = new FileOutputStream(tmp);

while ((len = zinread(buff)) != -1) {

foutwrite(buff, 0, len);

}

zincloseEntry();

foutclose();

}

}

}

这里完整的解压代码。

// if (!entrygetName()endsWith(file)) {

// continue;

// }

这段打开就是只解出一个你指定的文件。

下面是测试用的。

public static void main(String[] args) throws Exception {

new CommonFiles()unzip(new File("D:\\"), new File("D:\\testzip"),"filetxt");

}

这个例子会在D盘生成型个test文件夹,filetxt就会在里面,(里面也可能会有多个文件夹,这个取决于压缩包里文件的度)

没做过压缩程序,JAVA里面的字符串使用的编码为unicode,ZIP文件里面用的应该是本地编码(中文 *** 作系统用的是GB2312)。

你可以尝试着用类似这样的语句:String str = ( otherStrgetBytes("GB2312") );

祝好运。

调用开源项目winzipaes。

AesZipFileDecrypter zipFile = new AesZipFileDecrypter( new File("doc/zipSpecificationAeszip") );

ExtZipEntry entry = zipFilegetEntry( "zipSpecificationtxt" );

zipFileextractEntry( entry, new File("doc/zipSpecificationtxt"), "foo" );

具体参考下面链接

ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("d:\\testzip"));

String test1="test1";

String test2="test2";

byte[] bytes1 = test1getBytes("UTF-8");

byte[] bytes2 = test2getBytes("UTF-8");

ZipEntry z1 = new ZipEntry("test1txt");

zosputNextEntry(z1);

zoswrite(bytes1);

ZipEntry z2 = new ZipEntry("text2txt");

zosputNextEntry(z2);

zoswrite(bytes2);

zoscloseEntry();

zosclose();

//流可以自己获取

//java默认的包不支持中文(乱码)

//使用apache的ZipOutputStream进行zip压缩

是否可以解决您的问题?

以上就是关于java代码实现 导出zip包,无法打开zip压缩包全部的内容,包括:java代码实现 导出zip包,无法打开zip压缩包、请问用java编写一个压缩程序,怎样解决压缩文件zip里的文件名乱码问题!、java 解压zip 密码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10067051.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存