Входной и выходной потоковый канал в Java

Когда я делаю свое первое сохранение проекта, в котором пропущены поля в диалоговом окне «Новый проект», диалоговое окно «Сохранить» запрашивает все параметры.

То же самое, только на разных концах процесса.

9
задан Baginsss 13 December 2008 в 06:49
поделиться

5 ответов

Кажется, что суть этого вопроса упускается. Если я понимаю Вас правильно, Вы хотите объект, который функционирует как InputStream в одном потоке и OutputStream в другом для создания средства передачи между двумя потоками.

Возможно, один ответ должен использовать состав вместо наследования (который является методическими рекомендациями так или иначе). Создайте Канал, который содержит PipedInputStream и PipedOutputStream, подключенный друг к другу с getInputStream () и getOutputStream () методы.

Вы не можете непосредственно передать объект Канала чему-то нуждающемуся в потоке, но можно передать возвращаемое значение, он, заставляют методы делать это.

Это работает на Вас?

8
ответ дан 4 December 2019 в 11:44
поделиться

java.io. PipedOutputStream и java.io. PipedInputStream надеются быть классами для использования для этого сценария. Они разработаны, чтобы использоваться вместе для передачи по каналу данных между потоками.

Если бы Вы действительно хотите, чтобы некоторый отдельный объект раздал его, должен был бы содержать один из каждого из них и выставить их через методы считывания.

5
ответ дан 4 December 2019 в 11:44
поделиться

Это - довольно общая вещь сделать, я думаю. Посмотрите этот вопрос.

Простой способ записать содержание Java InputStream к OutputStream

3
ответ дан 4 December 2019 в 11:44
поделиться

Вы не можете создать класс, который получает обоих из InputStream и OutputStream потому что это не интерфейсы, и у них есть общепринятые методики, и Java не позволяет множественное наследование (компилятор не знает, звонить ли InputStream.close() или OutputStream.close() если Вы звоните close() на Вашем новом объекте).

Другой проблемой является буфер. Java хочет выделить статический буфер для данных (который не изменяется). Это означает, когда Вы используете 'java.io. PipedXxxStream', данные записи к нему в конечном счете заблокируются, если Вы не будете использовать два различных потока.

Таким образом, ответ от Apocalisp корректен: необходимо записать цикл копии.

Я предлагаю, чтобы Вы включали свободное-городское-население-io Apache в свой проект, который содержит много стандартных программ помощника только для задач как это (данные копии между потоками, файлами, строками и всеми комбинациями этого).

1
ответ дан 4 December 2019 в 11:44
поделиться
1
ответ дан 4 December 2019 в 11:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: