Java 是否可以确定要解压缩的文件的大小?
我目前有以下代码,使用ZipInputStream将zip文件解压缩到手机上的目标位置:Java 是否可以确定要解压缩的文件的大小?,java,android,android-asynctask,Java,Android,Android Asynctask,我目前有以下代码,使用ZipInputStream将zip文件解压缩到手机上的目标位置: ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(sourceZipFile)); ZipEntry zipEntry = null; while ((zipEntry = zipInputStream.getNextEntry()) != null) { File zipEntryFile = new Fil
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(sourceZipFile));
ZipEntry zipEntry = null;
while ((zipEntry = zipInputStream.getNextEntry()) != null)
{
File zipEntryFile = new File(targetFolder, zipEntry.getName());
// write contents of 'zipEntry' to 'zipEntryFile'
是否有人知道是否可以使用上述设置或其他方式在开始解压之前获得要解压的文件或字节总数的估计值,并随着解压的进行而增加进度?我认为ZipInputStream可能有一个GetTotalEntry或类似的方法,但找不到类似的方法…使用该方法。它返回未压缩文件的大小
如果ZIP文件中有多个条目文件,只需先迭代它们而不提取它们,然后将所有文件大小相加。这可能是一个很好的估计
请注意,如果您需要知道这些文件将在磁盘上占用的确切字节数,您还需要知道文件系统中群集的确切大小。使用此方法。它返回未压缩文件的大小
如果ZIP文件中有多个条目文件,只需先迭代它们而不提取它们,然后将所有文件大小相加。这可能是一个很好的估计
请注意,如果您需要知道这些文件将在磁盘上占用的确切字节数,您还需要知道文件系统中群集的确切大小。正如npe所述,ZipEntry将从zip文件中获取文件的未压缩大小 我想你需要做的是使用
getNextEntry
在完成之前,按照条目的大小和数量计算条目,然后重新开始实际解压缩,正如npe所述,ZipEntry将从zip文件中获取文件的未压缩大小 我想你需要做的是使用
getNextEntry
在完成之前,沿着条目的大小和数量计算条目的数量,然后重新开始实际解压缩谢谢您的回答。我遇到了一个java.util.zip.ZipFile类,它有一个size方法和一个entries方法来访问zip条目。我正在考虑用这个代替ZipInputStream,以避免对zip条目进行双重传递。你知道ZipFile和ZipInputStream两个类在性能、内存使用等方面是否相似吗?我从来没有真正使用过ZipFile。但是,看看吧。谢谢你的回答。我遇到了一个java.util.zip.ZipFile类,它有一个size方法和一个entries方法来访问zip条目。我正在考虑用这个代替ZipInputStream,以避免对zip条目进行双重传递。你知道ZipFile和ZipInputStream两个类在性能、内存使用等方面是否相似吗?我从来没有真正使用过ZipFile。但请查看。请参阅对npe答案的评论。请参阅对npe答案的评论。