Так как датасет мы скачиваем заархивированным в формат gzip, для дальнейшей работы с ним нам необходимо будет разархивировать его.
Для этого я решил написать утилитный класс:
public static void decompressGzip(File input, File output) throws IOException { try (GZIPInputStream in = new GZIPInputStream(new FileInputStream(input))){ try (FileOutputStream out = new FileOutputStream(output)){ byte[] buffer = new byte[1024]; int len; while((len = in.read(buffer)) != -1){ out.write(buffer, 0, len); } } catch (Exception e) { log.error("Error decompress file. Input: {} Output: {}", input.getAbsolutePath(), output.getAbsolutePath(), e); } } }
Работает утилита шустро и свою задачу выполняет. Тест это подтверждает:
@Test public void testDecompressGzip() throws IOException { File input = new File(resources + "reviews_Electronics_5_short.json1.gz"); File output = new File(resources + "reviews_Electronics_5_short1.json"); GzipUtility.decompressGzip(input, output); Path path = Paths.get(resources + "reviews_Electronics_5_short1.json"); assertTrue(Files.exists(path)); }
Скорее всего, я помещу вызов этой утилиты в класс Downloader.
Комментариев нет:
Отправить комментарий