Java 8 консоль

Стандартний потік введення java. lang. System. in. стандартний потік висновки java. lang. System. out. стандартний потік помилок java. lang. System. err - всі ці потоки за замовчуванням зазвичай працюють з консоллю, але в деяких випадках можуть бути пов'язані з файлом або ще чим-небудь. Потоки java. lang. System. out і java. lang. System. err є екземплярами класу java.io.PrintStream. Вхідний потік java. lang. System. in є екземпляром java.io.InputStream. Ми вже розглядали всі ці класи і бачили приклади їх використання.

java.io.Console

Містить методи для доступу до консолі, якщо є консоль, пов'язана з поточною віртуальною машиною.

Чи має віртуальна машина консоль чи ні, залежить від платформи і способу запуску віртуальної машини. Якщо віртуальна машина запущена зі стандартною інтерактивної консолі без перенаправлення стандартних потоків введення і виведення, то консоль є, і зазвичай вона пов'язана з клавіатурою і екраном, з якого запущена віртуальна машина. Якщо віртуальна машина була запущена автоматично, наприклад як фоновий процес, то зазвичай вона не має консолі.

Якщо віртуальна машина має консоль, то може бути отримано унікальний екземпляр цього класу за допомогою виклику java. lang. System. console (). Якщо немає доступної консолі, то метод поверне null.

Операції введення і виведення синхронізовані, щоб гарантувати атомарному виконання критичних операцій, тому виклик методів readLine (). readPassword (). format (). printf (). а також операції читання, форматування і записи з об'єктів, повернутих з reader () і writer () можуть привести до блокування при багатопоточності.

Виклик close () для об'єктів, повернутих з reader () і writer () не закриває потік цих об'єктів.

Методи читання з консолі повертають null. якщо було досягнуто кінець потоку введення, наприклад введення Ctrl + D в Unix або Ctrl + Z в Windows. Наступні операції читання будуть успішні, якщо в консоль пізніше були введені додаткові символи.

Якщо з додатком потрібно вважати пароль або будь-яку іншу секретну інформацію, то йому слід розглядати readPassword () або readPassword (String. Object.). а потім після обробки вручну забити пробілами лічений пароль, щоб мінімізувати час перебування секретних даних в пам'яті.