|
|
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Все время нет четкого понимания разницы между InputStream и OutputStream. Т.к. все относительно, то не врубаюсь когда какие классы (инпут- или аутпут-) использовать. Входящий поток это относительно чего он входящий и то же самое с исходящим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 13:39 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Например, если мы пишем файл, то понятно, что это аутпут, если читаем, то инпут. Но если например у нас есть массив байт, который надо прочитать и записать в другой массив байт? Надо сначала поместить этот исходный массив в InputStream прочитать в буфер, потом записать его через OutputStream в другой массив? Сори, что бред какой-то ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 13:44 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDSВходящий поток это относительно чего он входящий и то же самое с исходящим? Относительно кода, который его использует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 13:48 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Ну запиши в InputStream, или прочитай с OutputStream, если получится, то можно продолжить тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 14:07 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDSНапример, если мы пишем файл, то понятно, что это аутпут, если читаем, то инпут. Но если например у нас есть массив байт, который надо прочитать и записать в другой массив байт? Надо сначала поместить этот исходный массив в InputStream прочитать в буфер, потом записать его через OutputStream в другой массив? Сори, что бред какой-то ) Моя учительница математики в школе говорила, что через деньги можно обьяснить если не все, то многое! А типы "ПолучитьДеньги" и "ОтдатьДеньги" вы тоже путаете? В магазине на кассе получив чек требуете от кассира деньги? Продаете свой телефон и вместе с зарядным устройством кладете в упаковку бабло за него? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 14:55 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDS Но если например у нас есть массив байт, который надо прочитать и записать в другой массив байт? Смотрите на все глазами буфера для чтения. Читаем инпутом, пишем отуптом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2017, 14:58 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDSВсе время нет четкого понимания разницы между InputStream и OutputStream. Т.к. все относительно, то не врубаюсь когда какие классы (инпут- или аутпут-) использовать. Входящий поток это относительно чего он входящий и то же самое с исходящим? В JDK действительно есть определенная путаница в базовых интерфейсах и классах I/O. Особенно в части реализации текстовых интерфейсов, таких как Reade/Writer. Должен признаться что после кодинга под Microsoft C#.net (где-то в 2004) мне было трудно привыкнуть к способам правильной инициализации конструктора текстового стрима (с кодировками и с буферизацией). Даже сейчас я наизусть это не помню и каждый раз заглядываю в справочник. Но в остальном API достаточно понятный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2017, 22:29 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Вернулся. Пока не выходит каменный цветок в потоках. Задача есть массив байт, представляющих собой архив, его надо распаковать в новый массив байт или в строку (в памяти то бишь). Пробовал по-разному, текущий вариант: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Вызов: Код: java 1. 2. 3. Ломается на zin.read(tempBuffer): invalid entry compressed size (expected 5127 but got 5123 bytes) Что не так пока не пойму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 13:28 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Попробовал сделать то же самое, но с записью в файл. Ошибка лезет та же, но при этом файл из архива достается и создается нормально. Т.е. распаковывается на диск нормально, хоть и с этой же ошибкой. Поэтому заглушил эксепшн и оставил все как было с потоками: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Хоть и работает, но по-моему корявая бредятина, т.к. глушить ошибки это... ну вы понимаете ) Можно заглушить конкретно эту ошибку, но это тоже не норма имхо. В общем вопрос пока открыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 14:47 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Еще проще: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Один файл проходит, а дальше снова invalid entry compressed size. То есть даже не прочитать содержимое архива, только первый файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 15:18 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDS, Ну, так может проблема не в чтении архива а в формировании? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 15:21 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, так может проблема не в чтении архива а в формировании? Тоже закралось такое подозрение. Сохраняем архив в zip-файл. Он нормально распаковывается архиваторами, которые стоят на машине по дефолту. Но если пытаться прочитать, этот архив c диска явой, то снова вылезает эта же ошибка: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Создаем руками на машине архив, читаем его в яве, все нормально читается. Буду пытаться понять, что не так в формировании архива, но они приходят извне... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 15:44 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDSБуду пытаться понять, что не так в формировании архива, но они приходят извне... В формировании не так ровно то о чем написано в исключении. У файлов в архиве есть заголовок, внутри которого указан размер файла. https://en.wikipedia.org/wiki/Zip_(file_format)#File_headers Этот размер не совпадает с фактическим и на то могут быть две причины 1) Ошибка в формировании файла 2) Формат файла не классический Zip из-за чего и возникает разница ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 15:46 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Ой не нравится мне такая конструкция Код: java 1. 2. Откуда zin может знать сколько ему считывать байт в буфер? Дочитает до конца буфера и скажет -1? Разве здесь smart-указатель? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 16:46 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
SQL2008Дочитает до конца буфера и скажет -1? Согласен, выглядит подозрительно, но подозреваю, что -1 придет, когда уже нечего читать, т.е. все прочитал ) (хвостик должен бы вернуть >0). Подключил апачевскую либу org.apache.tools.zip. Она во всяком случае прочитала содержимое архива и не ругнулась. Придется попробовать изобразить то же самое с потоками и этой либой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 17:05 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Как новичок в Java рекомендую использовать библиотеку net.lingala.zip4j За полдня я написал класс, который зипует файл в памяти, ставит пароль на архив и возвращает его в виде массива байт. Вот работающий пример. Вам соответственно нужно изучить работу net.lingala.zip4j.io.ZipInputStream ZipCreationInMemory Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. InMemoryOutputStream Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 17:15 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
В варианте с апачесвкой библиотекой не нашел возможности распаковки из потока, из файла нормально читает: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. SQL2008 , спасибо большое, подключил ее, будем посмотреть ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2017, 18:23 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Пока не выходит ибо на вход принимается только файл. То есть распаковать в памяти можно конечно, но исходный файл требуется, чтобы был на диске, т.е. только два конструктора: Код: java 1. 2. 3. Вопрос: можно ли имеющийся массив байт преобразовать в File, чтобы засунуть его в конструктор ZipFile, не создавая файл на диске? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 15:32 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDS, И зачем понадобился именно ZipFile? Можно создать виртуальный диск. Только зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 15:34 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDSПока не выходит ибо на вход принимается только файл. То есть распаковать в памяти можно конечно, но исходный файл требуется, чтобы был на диске, т.е. только два конструктора: Код: java 1. 2. 3. Вопрос: можно ли имеющийся массив байт преобразовать в File, чтобы засунуть его в конструктор ZipFile, не создавая файл на диске? Можно! Сделайте временный файл и работайте с ним. Поищу код, если найду, то поделюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 15:41 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Blazkowicz , залез в примеры по net.lingala.zip4j . Там везде ноги начинают расти от ZipFile. То есть создается новый ZipFile, который на вход берет или File или строку с указанием пути к архиву. Далее в этом ZipFile или ищется конкретный FileHeader по имени (если заранее известно) или перебираются все. Далее для каждого FileHeader создается ZipInputStream и читается файл из архива в буфер. Как без ZipFile сразу сразу достать файл из архива в ZipInputStream, не втыкаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 15:42 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
SQL2008Можно! Сделайте временный файл и работайте с ним. Поищу код, если найду, то поделюсь. С временным файлом понятно, но это ведь тоже операции с диском, хотелось бы обойтись без них. Вирт. диск вариант, но не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 15:45 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDS Blazkowicz , залез в примеры по net.lingala.zip4j . Там везде ноги начинают расти от ZipFile. Ну, и на кой черт тогда это счастье нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 15:57 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDSSQL2008Можно! Сделайте временный файл и работайте с ним. Поищу код, если найду, то поделюсь. С временным файлом понятно, но это ведь тоже операции с диском, хотелось бы обойтись без них. Вирт. диск вариант, но не подходит. Примерно так (код выдернут из большого алгоритма поэтому чего-то может не хватать) Код: java 1. 2. 3. 4. 5. 6. 7. 8. Ну и после использования не забывайте удалять временный файл - за вас это никто не сделает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 16:02 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, и на кой черт тогда это счастье нужно? Примеры или lingala? Сам тоже спрашиваю себя, но в отношении библиотеки ) Но например и апачевская либа вроде тоже работает от файла, а стандартный java.util.zip не ест приходящие архивы, хотя с ним и получается подсунуть поток на распаковку. Остается или все-таки через временные файлы, или искать еще какие-то библиотеки, или найти возможность в этих библиотеках все-таки работать без записи на диск, или написать свой архиватор ) Самый простой и быстрый вариант - это первый конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 16:10 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDS, Есть пример файла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 16:22 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, примера для теста нет, тока рабочие ДСП так сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 16:46 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
SQL2008 Код: java 1. https://ru.wikipedia.org/wiki/CamelCase В языке Java принято использовать UpperCamelCase для наименования классов и lowerCamelCase — для наименования экземпляров классов и методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 17:40 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
UsmanВ языке Java принято ... Бесполезно объяснять дотнетчику. Он небось и открывающую скобку в новой строке пишет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 17:41 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Единственные косяки с zip файлами у меня были из за кодировки ZipEntry В Java полагается что zipentry в UTF-8. Все архивы сделанные на java везде читаются. Архивы сделанные 7zip на винде (ZipEntry name в кодировке windows 1251) не читаются на linux (UTF-8 default) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2017, 17:43 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
BlazkowiczUsmanВ языке Java принято ... Бесполезно объяснять дотнетчику. Он небось и открывающую скобку в новой строке пишет. Ну как же с утра и без чашечки едкого сарказма? А к скобкам в той же строке уже привык. Это подсознательно настраивает на синаксис в схожих языках. Чтобы на взгляд различать Код: plaintext 1. 2. 3. и Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2017, 09:10 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
UsmanSQL2008 Код: java 1. https://ru.wikipedia.org/wiki/CamelCase В языке Java принято использовать UpperCamelCase для наименования классов и lowerCamelCase — для наименования экземпляров классов и методов. Кстати ценное замечание! Постоянно вижу это в примерах, но никогда не задумывался. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2017, 09:27 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
llemingЕдинственные косяки с zip файлами у меня были из за кодировки ZipEntry В Java полагается что zipentry в UTF-8. Все архивы сделанные на java везде читаются. Архивы сделанные 7zip на винде (ZipEntry name в кодировке windows 1251) не читаются на linux (UTF-8 default) Если работаете с ZipEntry с помощью то ZipOutputStream у него есть метод Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2017, 09:35 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
SQL2008Кстати ценное замечание! Постоянно вижу это в примерах, но никогда не задумывался. Спасибо! И термин Coding Convention никогда не слышал? http://www.oracle.com/technetwork/java/codeconvtoc-136057.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2017, 09:58 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
BlazkowiczSQL2008Кстати ценное замечание! Постоянно вижу это в примерах, но никогда не задумывался. Спасибо! И термин Coding Convention никогда не слышал? http://www.oracle.com/technetwork/java/codeconvtoc-136057.html Слышал конечно, в С(++) всегда использовал "венгерскую" нотацию. В С# также. Но в Java это не совсем то же самое. Обычно (как я вижу) используется преффикс действия Код: java 1. 2. 3. 4. В принципе тоже нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2017, 10:07 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
И опять потоки ) (или не опять). Надо бы в памяти разобрать xml в строке. Можно легко сабстром наколбасить, благо xml совсем небольшой. Но есть же DocumentBuilder, а он тоже похоже только файлы жрет на входе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 15:32 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
JDSесть же DocumentBuilder, а он тоже похоже только файлы жрет на входерасскажи, как ты пришёл к такому выводу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 15:56 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
grasoff.netрасскажи Погорячился, поток на вход тоже принимаем и строку в поток тоже засовываем: Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 16:48 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Возвращаясь к первоначальному вопросу. Вот такое чудо имеется Код: java 1. Метод читает содержимое документа из хранилища. Казалось бы, должно быть что-то типа IDfSysObject.writeTo(OutputStream out), но нифига. Вот где путаница в головах разработчиков. Между прочим, EMC2 Documentum ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2017, 23:38 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Кстати вот в таком вот коде: Код: java 1. 2. 3. 4. 5. 6. Почему результат команда cat pom.xml мы находим в outputStream процесса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 16:16 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
questioner, stdout же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 16:23 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Usmanquestioner, stdout же Где? Код: java 1. 2. 3. 4. 5. 6. Есть java process(java_p) Есть cat process(cat_p) берет у cat_p input Stream, считываем его в строку. где out увидели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 16:30 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
авторПочему результат команда cat pom.xml мы находим в outputStream процесса? опечатался. Я ожидаю находить результат работы в stdout(System.out), а на вход подавать через stdin(System.in). И мне непонятно почему мы результат читаем из System.in ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 16:32 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
questionerИ мне непонятно почему мы результат читаем из System.inВ *OutputStream'ах нет операций считывания. Там только write'ы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 17:35 |
|
||
|
Стримы для простых смертных
|
|||
|---|---|---|---|
|
#18+
Usman, Там оказывается инпут, который берется у процесса соединяется с аутпутом процесса потомка, а аутпут с инпутом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 13:48 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2123030]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 379ms |

| 0 / 0 |
