Можем ли мы сжать большой файл как данные чанка для GZIP в blackberry? - PullRequest
0 голосов
/ 19 июля 2011

Я видел пример API как ниже

public static byte[] compress( byte[] data )
{   
    try
    {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        GZIPOutputStream gzipStream = new GZIPOutputStream( baos, 6, GZIPOutputStream.MAX_LOG2_WINDOW_LENGTH );
        gzipStream.write( data );
        gzipStream.close();
    }
    catch(IOException ioe)
    {
        return null;
    }

    return baos.toByteArray();
} 

Но когда я попытался сжать большой файл с помощью Curve 8900 OS 4.6, я получил "OutOfMemoryError", так что я хотел бы знать, как сжать небольшие данные?

Я уже пробовал использовать этот код, как показано ниже, но он не работает, сжатый файл не может распаковать ...

file = (FileConnection)Connector.open(_fileOutputPath, Connector.READ_WRITE);
            if (!file.exists()) {
                file.create();
            }
            os = file.openOutputStream();
            is = FileUtil.getInputStream(_fileInputPath, 0);
            int tmpSize = 1024;           
            byte[] tmp = new byte[tmpSize];
            int len = -1;
            gzipStream = new GZIPOutputStream( os, 6, GZIPOutputStream.MAX_LOG2_WINDOW_LENGTH );
            while((len = is.read(tmp, 0, tmpSize)) != -1) {
                gzipStream.write(tmp, 0, len);
            }

Ответы [ 2 ]

0 голосов
/ 23 апреля 2012

Проблема первого примера кода заключается в том, что ByteArrayOutputStream становится слишком большим для ограниченной памяти мобильного устройства.

Можно сначала записать файл (например) на SD-карту.

Второй пример кода выглядит нормально, но посмотрите ответ Майкла.

0 голосов
/ 19 июля 2011

GZIPOutputStream не создает файл, подходящий для использования с инструментом командной строки gzip. Это потому, что он не создает необходимые заголовки файлов. Как вы тестировали распаковку? Вы должны написать аналогичную Java-программу, которая использует GZIPInputStream для тестирования, так как 'gunzip' не распознает ввод.

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