在zip文件java中的所有目录上迭代
我目前正在开发一个工具,允许我修改zip文件的md5。文件的目录结构如下所示在zip文件java中的所有目录上迭代,java,hash,zip,md5,Java,Hash,Zip,Md5,我目前正在开发一个工具,允许我修改zip文件的md5。文件的目录结构如下所示 baselines-> models -> icons -> lang -> (a bunch of files here) 但是,当我运行代码时,这些目录中没有一个会迭代到。输出给我: Name:model/visualization_dependency.xml Name:model/visualization_te
baselines->
models -> icons ->
lang ->
(a bunch of files here)
但是,当我运行代码时,这些目录中没有一个会迭代到。输出给我:
Name:model/visualization_dependency.xml
Name:model/visualization_template.xml
Name:model/weldmgmt_dependency.xml
Name:model/weldmgmt_template.xml
我本来希望输出中会出现model/baseline/somefile.xml之类的内容,但实际上没有。有什么想法吗
byte[] digest = null;
MessageDigest md5;
try {
md5 = MessageDigest.getInstance("MD5");
ZipEntry current;
while((current = entry.getNextEntry()) != null){
//ZipEntry current = entry.getNextEntry();
System.out.println("Size:" + current.getSize());
System.out.println("Name:" + current.getName());
if(current.isDirectory()){
digest = this.encodeUTF8(current.getName());
md5.update(digest);
}
else{
int size = (int)current.getSize();
digest = new byte[size];
entry.read(digest, 0, size);
md5.update(digest);
}
}
digest = md5.digest();
entry.close();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
检查现有文件夹是否为目录后,需要遍历目录中的每个文件,并对其中的每个文件进行处理 例如:
if(current.isDirectory()){
System.out.println("Directory: " + file.getName());
//Get list of files by file.listFiles() and pass it to
// to other method that will do processing.
digest = this.encodeUTF8(current.getName());
md5.update(digest);
}
检查这个问题,它详细说明了过程。
我认为你的代码很完美。我怀疑您的zip文件不包含目录。他们不必 例如,我用“a/b/c/d.txt”创建了一个zip文件。当我最初创建它时,目录被添加到zip文件中:
$ unzip -l a.zip
Archive: a.zip
Length Date Time Name
--------- ---------- ----- ----
0 2012-06-12 14:22 a/
0 2012-06-12 14:22 a/b/
0 2012-06-12 14:22 a/b/c/
19 2012-06-12 14:22 a/b/c/d.txt
--------- -------
19 4 files
但后来我从zip索引中删除了目录:
$ zip -d a.zip a/b/c
deleting: a/b/c/
$ zip -d a.zip a/b
deleting: a/b/
$ zip -d a.zip a
deleting: a/
现在当我列出它的内容时,果然,只有文件出现了。目录不见了:
$ unzip -l a.zip
Archive: a.zip
Length Date Time Name
--------- ---------- ----- ----
19 2012-06-12 14:22 a/b/c/d.txt
--------- -------
19 1 file
注意:当我解压这个文件时,它在解压d.txt文件之前创建了a/b/c/目录,即使zip索引本身不包含任何目录。因此,zip文件中的目录项看起来是完全可选的