Загрузите, распакуйте и проанализируйте zip-файл в объекте Java - невозможно прочитать байты из ZipInputStream - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть следующее, что не может вывести строку на консоль, как я ожидал:

    String url = "http://mis.ercot.com/misdownload/servlets/mirDownload? 
                                        mimic_duns=000000000&doclookupId=698819309";
        URL obj = new URL(url.trim());
        HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
        conn.getResponseCode();
        InputStream stream = conn.getInputStream();
        ZipInputStream zis = new ZipInputStream(stream);
        byte[] buffer = new byte[1024];
        int i = zis.read(buffer);
        String str = new String(buffer, StandardCharsets.UTF_8);
        System.out.println(str);

По URL-адресу есть zip-файл, который содержит XML файл, который я необходимо в конечном итоге разобрать, но сейчас я буду удовлетворен, просто распечатав его на консоли, и таким образом подтвердив, что я успешно разархивировал файл.

Что-то вроде следующего действительно генерирует правильное имя файла:

        ZipEntry ze = zis.getNextEntry();
        System.out.println(ze);

Таким образом, я знаю, что я на правильном пути, но мне не нужно имя файла, мне даже не нужен файл, мне нужны записи XML, потому что моя конечная цель должен сохраняться до SQL.

1 Ответ

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

Следующее l oop должно помочь вам начать

ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
    byte contents[] = new byte[4096];
    int direct;
    while ((direct = zis.read(contents, 0, contents.length)) >= 0) {
        System.out.println(entry.getName() + ", " + direct + " bytes");
        for (byte con : contents) {
            System.out.print((char) con);
        }
    }
    System.out.println();
}

Адаптировано из Как читать файл из ZIP с помощью InputStream?

...