java - 计算java中存档中的文件数

标签 java file count

我正在尝试计算存档中的文件数。我的代码对包括文件夹在内的所有实体进行计数的问题(例如,如果我有复杂的目录但其中只有一个文件,我无法验证我的存档)。我使用方法 size()。

import java.nio.file.Path;
import javax.enterprise.context.Dependent;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import ru.cntp.eupp.roster.Notification;
import java.util.ArrayList;
import java.util.zip.ZipFile;
import java.util.List;
import java.util.Enumeration;

/*
 * @author dfaevskii
 */
@Dependent
public class ZipValidator {

     public void validate(Path pathToFile) throws IOException {

         ZipFile zipFile = new ZipFile(pathToFile.toFile());

         if (zipFile.size() != 1 && zipFile.size() != 2) {
             throw new InvalidZipException("The number of files in archive is more than  2");
         } 
     }
 }

最佳答案

您可以使用 entries() 方法获取 zip 文件中 ZipEntryEnumeration,并检查每个一个看看它是否 isDirectory():

int countRegularFiles(final ZipFile zipFile) {
    final Enumeration<? extends ZipEntry> entries = zipFile.entries();
    int numRegularFiles = 0;
    while (entries.hasMoreElements()) {
        if (! entries.nextElement().isDirectory()) {
            ++numRegularFiles;
        }
    }
    return numRegularFiles;
}

关于java - 计算java中存档中的文件数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33910406/

相关文章:

java - 两种配置编译gradle

php - 如何创建允许选择多个文件的文件输入?

Mysql COUNT VS num rows 性能

sql - aws redshift 中的 ILIKE 和 NOT ILIKE 与 total 不同

java/guava - 从 iterable 中收集删除的元素

java - 如何让b2box主体和 Sprite 以相同速度旋转?

Java 获取 JPanel 组件

iphone - Xcode 4 中是否有用于组织的 "best practice"?

c - 读取数据文件并存储到结构数组中

sql - 基于 CONVERT 输出的行数