powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayList<InputStream>
12 сообщений из 12, страница 1 из 1
ArrayList<InputStream>
    #39615079
Bsplesk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вечер ... затуп ....

ArrayList<InputStream>

Подскажите, пожалуйста, по сабжу.

Есть некий <InputStream> в него считывается файл/ресурс, который включен в jar.
Код: java
1.
InputStream st = classLoader.getResourceAsStream("path_to_resource");


Делаю проверку, что все Ок считалось(использую util от apache для удобства):
Код: java
1.
2.
String result = IOUtils.toString(st, StandardCharsets.UTF_8); //code page file UTF-8
System.out.println(result);


Всё Ок.
Далее помещаю в ArrayList:
Код: java
1.
2.
ArrayList<InputStream> stArr = new ArrayList<InputStream>(1);
stArr.add(st);


Пытаюсь получить обратно:
Код: java
1.
String result_array = IOUtils.toString(stArr.get(0), StandardCharsets.UTF_8);


Вывод: пусто.
Код: java
1.
System.out.println(dataBindings.get(0));


Вывод:
Код: plaintext
sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream@7ea987ac

Как правильно помещать/доставать <InputStream> в ArrayList<InputStream>?
...
Рейтинг: 0 / 0
ArrayList<InputStream>
    #39615094
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InputStream в общем случае одноразовый, его нельзя два раза прочитать.
...
Рейтинг: 0 / 0
ArrayList<InputStream>
    #39615103
Bsplesk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понял. Что значит одноразовый?
Я его считал и хочу его поместить в массив, чтобы потом его оттуда считать.
...
Рейтинг: 0 / 0
ArrayList<InputStream>
    #39615107
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BspleskНе понял. Что значит одноразовый?
Я его считал и хочу его поместить в массив, чтобы потом его оттуда считать.
У тебя - немотивированные действия. Зачем ты считал объект st в строку result?
Что будешь делать дальше со строкой result?
...
Рейтинг: 0 / 0
ArrayList<InputStream>
    #39615109
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если (любым способом) прочесть поток ввода, то любые последующие чтения вернут E(nd)O(f)I(nput) / IllegallState / нечто похоже.
Даже если поток ввода допускает позиционирование (RandomAccessFile, например), повторное чтение требует переустановки позиции чтения.
  • В сухом остатке:Чтение меняет состояние потока и его (чтение) нельзя делать "на всякий случай";
  • Возможность (пере)позиционирования указателей чтения/записи - скорее исключение, чем правило.
...
Рейтинг: 0 / 0
ArrayList<InputStream>
    #39615123
Bsplesk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

Пасиб, внятно.

"Возможность (пере)позиционирования указателей чтения/записи - скорее исключение, чем правило."

Нет ссылочки под рукой почитать? хотя маловероятно, что понадобится, мне и байтового массива хватит в качестве "слепка" исходного файла.

Случай пере)позиционирования = обращение к файловой системе или всё сложней?
...
Рейтинг: 0 / 0
ArrayList<InputStream>
    #39615126
Bsplesk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зачем:
Код: java
1.
2.
createContextFromXSD(java.io.InputStream schemaStream, org.xml.sax.EntityResolver resolver, java.lang.ClassLoader classLoader, java.util.Map<java.lang.String,?> properties)
Create a DynamicJAXBContext, using XML Schema as the metadata source.



http://www.eclipse.org/eclipselink/api/2.6/org/eclipse/persistence/jaxb/dynamic/DynamicJAXBContextFactory.html

Перед тем как вызвать указанное выше, необходимо содержимое java.io.InputStream schemaStream залогировать.
...
Рейтинг: 0 / 0
ArrayList<InputStream>
    #39615127
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java Runtime (среда исполнения) позволяет создавать объекты, для которых существует API.
Базой является Java SE . Основа ввода/вывода - пакеты java.io и java.nio.
Выбираем доку по нужной версии и читаем - и API и примеры/руководства.
...
Рейтинг: 0 / 0
ArrayList<InputStream>
    #39615129
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BspleskСлучай пере)позиционирования = обращение к файловой системе или всё сложней?Вы лезете в какие-то совершенно ненужные дебри ...
Потоки ввода/вывода могут быть созданы из разных источников: файл или каталог из файловой системы, блочное или символьное устройство, массив байт, другой поток ввода/вывода ...
Файловая система может создаваться поверх блочного устройства, байтового массива или другого файла.
Толку рассматривать разные варианты, если надо взять ваш конкретный случай, изучить API и решить как решать вашу задачу.
...
Рейтинг: 0 / 0
ArrayList<InputStream>
    #39615139
Bsplesk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну как же ненужные, очень даже нужные.
Простейшая задача, "открыть" поток --> (залогировать его содержимое/по середине) --> передать дальше --> закрыть. Всё.
Хотя возможно будет проще соответствующий метод требующий <InputStream> "подправить".

p.s.
за docs.oracle.com, конечно спасибо(знаний действительно не хватает, будем читать), хорошо, что сразу не в google.
...
Рейтинг: 0 / 0
ArrayList<InputStream>
    #39615141
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BspleskПростейшая задача, "открыть" поток --> (залогировать его содержимое/по середине) --> передать дальше --> закрыть.Пишите обёртку, которая реализует интерфейс InputStream и, дополнительно, продублирует прочитанное в (какой-то) поток вывода.
Пожалуй, простейшим вариантом будет задействовать (небольшой) ByteBuffer, в котором будут накапливаться прочитанные данные и по-блочно записываться в "дублирующий" поток.
...
Рейтинг: 0 / 0
ArrayList<InputStream>
    #39615154
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никто не запрещает вызывать getResourceAsStream множество раз. Хранить InputStream бесмысленно так же как и помещать в ArrayList.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ArrayList<InputStream>
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]