Console Class
[ http://docs.oracle.com/javase/8/docs/api/index.html ] Console 클래스에 대한 doc 입니다.
Console 클래스는 자바6부터 추가되었습니다 , Console클래스는 콘솔에서 입력받은 문자열을 쉽게 읽을수 있도록 기능을 제공합니다.
주의할 점은 이클립스에서 실행을 하게된다면 다음과 같은 Exception 이 발생합니다
java.lang.NullPointerException인데 제대로 실행했는데 왜 다음과 같은 에러가 뜬것일까요.
System.console()메소드는 이클립스에서 실행하면 null을 리턴하기 때문입니다. 따라서 반드시 명령 프롬프트에서 실행하시기 바랍니다.
import java.io.Console; public class ConsoleClassExam { public static void main(String[] args) { //콘솔에서 실행하지 않는다면 System.console()의 반환값은 null Console console = System.console(); System.out.print("아이디 : "); String id = console.readLine(); System.out.print("비밀번호"); char[] consolePassword = console.readPassword(); String password = new String(consolePassword); System.out.println("----- 결과 -----"); System.out.println(id); System.out.println(password); } // end of main } // end of class
이 예제는 이것이자바다라는 책에서 예제를 가져온 것입니다.
이렇게 예제를 작성하고 커맨드창에서 자신의 workspace 경로로 이동합니다.
경로로 이동을해서 javac 파일명.java 로 컴파일을 시도했는데 다음과 같은 오류가 발생하였습니다 ( 제 이클립스는 encoding utf-8 로 설정되어 있습니다 )
에러명 그대로 MS949인코딩으로 매핑할 수 없다는 에러입니다.
에러 해결법인 javac 파일명.java -encoding UTF-8 로 해주면 됩니다.
그러면 아래와 같이 정상적으로 컴파일 되는것을 확인할 수 있습니다.
자 그럼 이제 실행해보겠습니다.
아이디에 yunjin 을 입력하고 비밀번호에는 아무것도 입력되어있지 않지만 비밀번호에 12345678이 출력된걸 확인할수 있다.
이뉴는 간단하다 console.readPassword()를 호출해서 사용하면 입력받을때 콘솔창에 비밀번호를 입력해도 표시가 되지않기 때문이다. 그렇
다고 실제로 데이터가 저장되지 않는것이아니라 사용자에게만 보이지 않는것이다.
추가 : workspace/bin 에 이동해서 실행하면 컴파일이 되어있기때문에 바로 실행해볼 수 있다.
'Java' 카테고리의 다른 글
[Java] Java 람다식 공부중 Functional Interface에 abstract method가 2개이상인경우. (0) | 2018.12.03 |
---|---|
[Java] Java + Maven 을 사용한 Redis 연결, (0) | 2018.11.01 |
Java OutputStream의 메서드 (0) | 2017.07.20 |
Java InputStream의 메서드 (1) | 2017.07.20 |
Java IO패키지 (0) | 2017.07.20 |
댓글