如何在Java中以随机顺序迭代zip文件中的条目?

时间:2016-09-19 02:48:40

标签: java

我正在开展一个机器学习项目,我有一个以zip形式存储的10,000个培训文件。我想在zip文件中的每个文件上训练我的模型,我听说如果你多次训练整个数据集,最好随机化训练数据的顺序。这个项目是用Java完成的。

所以我想知道是否有可能在Java中以随机顺序迭代ZipFile中的条目?以下是我提到的API:https://docs.oracle.com/javase/7/docs/api/java/util/zip/ZipFile.html

2 个答案:

答案 0 :(得分:2)

使用zipFile.entries()迭代zip文件,并将zip条目添加到ArrayList<ZipEntry>

通过调用Collections.shuffle(list)随机化该列表。

您现在可以简单地迭代随机列表并调用zipFile.getInputStream(zipEntry)

答案 1 :(得分:1)

您可以使用以下内容作为起点:

        ZipFile f = new ZipFile("path_to_file");
        Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) f.entries();
        List<ZipEntry> entryList = new ArrayList<ZipEntry>();
        while(entries.hasMoreElements()){
            ZipEntry enrty = entries.nextElement();
            entryList.add(enrty);
        }
        Collections.shuffle(entryList);
        for(ZipEntry e:entryList){
            System.out.println(e.getName());
        }