Apache обыкновенный компресс - PullRequest
0 голосов
/ 20 февраля 2020

Я использую commons-compress для обработки файлов tarball и заметил, что даже файлы, которые не являются tar, похоже, обрабатываются. Почему это так - есть ли лучшая библиотека для обнаружения допустимых файлов tar

 <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-compress</artifactId>
      <version>1.20</version>
 </dependency>

bug689.csv - это файл CSV, тест не пройден, потому что, очевидно, te.isFile () возвращает true. te.getName (), кажется, возвращает содержимое CSV. Является ли это ошибкой, если я использую пакет неправильно - я ожидаю, что InputStream не будет успешно преобразован в TarArchiveEntry

    @Test
    public void testTarball() throws IOException{
        InputStream tarData = this.getClass().getResourceAsStream("/bug689.csv");
        TarArchiveInputStream tis = new TarArchiveInputStream(tarData);
        TarArchiveEntry te = tis.getNextTarEntry();
        assertFalse(te.isFile());
    }

1 Ответ

0 голосов
/ 21 февраля 2020

Если вы не имеете дело с файлом tar, тогда tis.getNextTarEntry() будет null - поэтому вам придется явно проверить это.

Но если у вас есть действительный файл tar, будьте осторожны опираясь на te.isFile(). Первый элемент в вашем tar не может быть обычным файлом. Это может быть каталог или что-то еще.

Файл tar может даже быть пустым - в этом случае tis.getNextTarEntry() снова будет нулевым.

Если вы хотите проверять только тар, содержащий один обычный файл, то я не вижу проблем с использованием te.isFile().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...