|
|
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
Добрый день. Необходимо с помощью с GZIPOutputStream сжать строку. Как это сделать с потоком понятно, а как преобразовать строку в поток непонятно. String s; PrintWriter out = new PrintWriter(new GZIPOutputStream("здесь поток из строки s"), false); дальше необходимо преобразовать out в строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 17:24 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
StringReader/StringWriter ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 17:26 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
funikovyuriStringReader/StringWriter Не могли бы привести полный пример. Доку я уже прочитал, но не понял как сделать преобразование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 17:30 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. Вместо copy() можно и свой код написать, который будет брать данные из is и отправлять в os ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 17:50 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
Спасибо, а наоборот через ByteArrayOutputStream у меня не получается. ByteArrayOutputStream bas=new ByteArrayOutputStream(); bas.write(s.getBytes("Cp1251")); GZIPOutputStream is = new GZIPOutputStream(bas,false); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 18:57 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 19:20 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
Спасибо, в одну строну получилось, а рахархивирование ингда не проиходит - вываливается ошибка exception java.io.IOException: Corrupt GZIP trailer . Это происходит не на всех примерах. Прилагаю файл с тестовыми данными и исходником. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2005, 20:06 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4262583 так что этот exception просто в ignore :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 11:24 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
funikovyuri http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4262583 так что этот exception просто в ignore :) Да вроде не мой случай, там говориться про файлы длиной больше 2Г , а у меня чуть больше 300к и вылетает ошибка. Пробовал игнорировать excp - получается строка больше примерно на 200 байт Весь вечер ковырялся ничего не помогло. Странно. Существуют ли потоковые архиваторы других разработчиков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 22:48 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
L_Leonid funikovyuri http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4262583 так что этот exception просто в ignore :) Да вроде не мой случай, там говориться про файлы длиной больше 2Г , а у меня чуть больше 300к и вылетает ошибка. Пробовал игнорировать excp - получается строка больше примерно на 200 байт Весь вечер ковырялся ничего не помогло. Странно. Существуют ли потоковые архиваторы других разработчиков? Из твоего аттачмента: Код: plaintext 1. 2. 3. 4. 5. 6. 7. s.getBytes() not equal zippedDataOS.toByteArray(), т.к. происходит charencoding служебной информации + используется с самой кодировкой могут быть проблемы. Если это исправить IOException пропадёт. Правда со словом екатеринбург какие-то проблемы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 10:30 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUss.getBytes() not equal zippedDataOS.toByteArray(), т.к. происходит charencoding служебной информации + с кодировкой могут быть проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 10:32 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
Из твоего аттачмента: Код: plaintext 1. 2. 3. 4. 5. 6. 7. s.getBytes() not equal zippedDataOS.toByteArray(), т.к. происходит charencoding служебной информации + используется с самой кодировкой могут быть проблемы. Если это исправить IOException пропадёт. Правда со словом екатеринбург какие-то проблемы :) что-то мне не сообразить, пишу s=new String(zippedDataOS.toByteArray(),"Cp1251"); ... GZIPInputStream is = new GZIPInputStream(new ByteArrayInputStream(s.getBytes("Cp1251"))); сначала длина 370036, потом уже 372239 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:17 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
L_Leonids=new String(zippedDataOS.toByteArray(),"Cp1251"); ... GZIPInputStream is = new GZIPInputStream(new ByteArrayInputStream(s.getBytes("Cp1251"))); сначала длина 370036, потом уже 372239 Для начала сравни по байтово zippedDataOS.toByteArray() и s.getBytes("Cp1251"). А потом возьми то что было "370036" и сравни с тем что получается "372239", тоже по байтово. По крайнем мере, станет ясно где копать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:21 |
|
||
|
Сжать строку
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs Для начала сравни по байтово zippedDataOS.toByteArray() и s.getBytes("Cp1251"). byte[] byte1=zippedDataOS.toByteArray(); byte[] byte2=s.getBytes("Cp1251"); for (int j=0; j<byte1.length; j++) { if (byte1[j]!=byte2[j]) System.out.println("not equals "+j+" "+byte1[j]+" "+byte2[j]); } есть расхождения, длина массивов одинаковая, пробовал играться с кодировками - не помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 13:34 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33074230&tid=2152364]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 435ms |

| 0 / 0 |
