Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 25.12.2016
Сообщений: 108
1

Стандартный поток ввода - считывать данные НЕ из консоли

07.02.2017, 15:53. Показов 751. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

На сколько я знаю - System.in ссылается на стандартный поток ввода, который читает данные из консоли. А можно перенаправить этот поток так, чтобы он напрямую читал данные с клавиатуры?
В чем собственно проблема: хочется чтобы при нажатии клавиши происходило некоторое событие - например вызывалась какая-то функция. Пробовал делать так:

Java
1
2
3
4
5
6
7
8
9
10
//в отдельном потоке
while(true) {
 
    int value = System.int.read();
 
    if(value == 132) {
        //что-то делаем
    }
 
}
Вроде для этой задачи нужно использовать систему событий, но они связаны с графическими компонентами, а создавать для тривиальных задач окно - не всегда уместно.

Вопрос таков - можно ли с помощью системы ввода/вывода (например того же java.io) напрямую читать данные с клавиатуры? И если можно - подскажите пожалуйста как это делать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2017, 15:53
Ответы с готовыми решениями:

Стандартный поток ввода
В условии задачи написано: на стандартном потоке ввода задаётся последовательность целых чисел....

Стандартный поток ввода
Доброго времени суток. Допустим есть код: double d; cin >> d; Допустим, в потоке...

Задача на стандартный поток ввода
Привет :) Читаю книгу Страуступа. Дошёл до 5-ой главы, тут есть одно упражнение. Пытался его...

Стандартный поток ввода, конец файла
Что считается концом файла на стандартном потоке ввода. То есть, по сути, на scanf?

3
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
07.02.2017, 17:55 2
считай, что нельзя (или погугли jcurses, как-то так)
0
0 / 0 / 1
Регистрация: 25.12.2016
Сообщений: 108
07.02.2017, 18:12  [ТС] 3
Хотелось бы уточнить один момент. В Java система ввода\вывода основана на понятии поток(Stream). Собственно - что это за поток? Просматривая код классов java.io я не нашёл вызова нативных методов, как и не нашёл использование к Thread, Runnable и т.д. Я правильно понимаю, что эти потоки создаются и управляются где-то в недрах JVM? Т.е. где-то там происходит прямое общение с клавиатурой и другими приборами ввода\ вывода, файлами - и вся полученная информация маскируется в поток байтов или символов.
Если я не ошибся в том, что написано выше - можно каким-то образом через нативный интерфейс и рефлекшин напрямую слушать клавиатуру?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
07.02.2017, 20:56 4
да.
0
07.02.2017, 20:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2017, 20:56
Помогаю со студенческими работами здесь

Стандартный поток ввода и вывода в Objective-C
Я новичок в Objective-C. Мне необходимо ввести данные с клавиатуры в переменные а и b, а затем...

Считывать данные пока не встретится символ '|' обозначающий конец ввода
Нужно считать данные пока не встретится символ '|' обозначающий конец ввода. double val;...

как записывать данные в поток ввода-вывода?
доброго времени суток, появилась "гениальная" идея, перехватить сообщения идущие в поток...

Необходимо чтобы каждый поток (не файловый) писал данные в ОТДЕЛЬНОЕ ОКНО КОНСОЛИ
Друзья! Разбираюсь с библиотекой pthread, потоки-читатели выводят данные в одно окно консоли, очень...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru