Сжатие с использованием GZIPOutputStream и распаковка в php

0

Я общался с моим Java-приложением, используя php, создав сокет, с конца Java, я сжимаю результат и записываю эти байты в php.

public static byte[] compressString(byte[] b) throws IOException{
        byte[] compressedBytes = null;
        ByteArrayOutputStream out = new ByteArrayOutputStream(b.length);
        try{
            GZIPOutputStream gzip = new GZIPOutputStream(out);
            gzip.write(b, 0, b.length);
            gzip.finish();
            gzip.flush();
            gzip.close();
            compressedBytes = out.toByteArray();
            System.out.println("comp1::"+compressedBytes+", length::"+compressedBytes.length);
        }finally{
            out.close();
        }
        return compressedBytes;
    }

Но когда я выступаю

$data = fgets($fp);
$decompData = gzuncompress($data);

$ decompData возвращается null.

Просьба предоставить решение, как я пробовал Deflater с gzuncompress, gzdecode и всеми возможными вариантами. Здесь, должно быть, чего-то не хватает. Считайте меня новичком в php.

  • 1
    Вы сохранили поток в виде файла и попытались открыть его с помощью программы zip, чтобы увидеть, в порядке ли содержимое файла?
  • 0
    Я сохранил все данные в сокете в виде байтов, а позже с помощью fsockopen () я нашел свой обработчик сокетов и с помощью fread () я читаю байты без сохранения в файл или создания zip.
Теги:
compression

1 ответ

0

Вам нужно использовать gzdecode() для потоков gzip, и вам может потребоваться открыть файл с помощью "rb" для чтения двоичных данных без перевода.

  • 0
    Тогда как я смогу читать данные из сокета.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню