
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 密码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)