У меня возникли проблемы с поиском способа перебора 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
У кого-нибудь есть идеи, как мне достичь своей цели?