Поиск ZipEntry с использованием подхода поиска в ширину в Java - PullRequest
0 голосов
/ 10 января 2019

У меня возникли проблемы с поиском способа перебора ZipFile в java методом поиска в ширину.

Я обнаружил, что при получении всех записей с использованием любого метода перечисления ZipInputStream любой метод сортирует их в порядке глубины поиска. Я также проверил с использованием отладки.

Код 1:

ZipInputStream zf = new ZipInputStream(inputStream);
ZipEntry[] entries;
ZipEntry zipEntry;

while ((zipEntry = zf.getNextEntry()) != null)
{
  entries.add(zipEntry);
}

Код 2:

ZipEntry[] entries;
Enumeration<ZipEntry> enumeration = zipFile.entries();

while (enumeration.hasMoreElements())
{
  entries.add(en.nextElement());
}

Пример zip-файла:

foo.zip
| -- folder1
|    | -- file11
|    | -- file12
| -- folder2
|    | -- file21
|    | -- file22
| -- lorem.txt

Я хотел бы получить записи в следующем порядке:

1. folder1/
2. folder2/
3. lorem.txt
4. folder1/file11
5. folder1/file12
6. folder2/file21
7. folder2/file22

и так далее ...

Но вместо этого я получаю это как:

1. folder1/
2. folder1/file11
3. folder1/file12
4. folder2/
5. folder2/file21
6. folder2/file22
7. lorem.txt

У кого-нибудь есть идеи, как мне достичь своей цели?

...