
InputStream은 바이트 단위 입출력의 기본이다.
System.in은 자바 API에서 제공하는 콘솔 입력을 위한 InputStream 객체다.System 클래스는 JVM의 표준 장치를 뜻하며 입출력 장치를 System 클래스에 등록하여 사용한다.JVM이 메모리에 올라오면 자동으로 System.in 객체를 생성한다.
in은 System 클래스의 static 참조 변수(객체)이다.자료형은 InputStream타입이다.
엔터키를 입력한 시점에 InputStream으로 전달한다.
운영체제 마다 콘솔에서 엔터를 입력하는 데이터가 다르다.
package com.java.io05_console;
import java.io.InputStream;
import java.util.Scanner;
public class ConsoleInput01 {
public static void main(String[] args) {
// IO > byte 단위 입출력 >Console 입출력 > System.in(표준 입력 장치를 관리 하는 객체)
//System.in(필드값,전역변수,주소값,객체)
//Class System {
// InputStream in; //전역변수,객체
//}
// Scanner scan = new Scanner(System.in); //키보드,마우스 ....
// int data =scan.nextInt();
// System.out.println(data);
InputStream is =System.in; //is 표준입력 스트림 객체 생성
Scanner scan = new Scanner(is);
int data = scan.nextInt();
System.out.println(data);
}
}
package com.java.io05_console;
import java.io.IOException;
import java.io.InputStream;
public class ConsoleInput02 {
public static void main(String[] args) throws IOException {
// ... > InputStream >System.in:표준 입력 장치(jVM에서 인식하고 있는 장치)
InputStream is = System.in;
// 콘솔입력 Hello + enter = Hello + \\r +\\n =7 byte
int data = 0;
// \\r != \\r
while ((data = is.read()) != '\\r') { // 파일 입출력 끝 -1, 콘솔 입출력 \\r
System.out.println("읽은 데이터:" + (char) data + ",남은 데이터 수:" + is.available());
}
System.out.println( data); // 13 \\r 입력 스트림(버퍼)으로 읽어온 마지막 값 \\r
System.out.println(is.read()); // 10 \\n 마지막 입력 버퍼에 있는 값을 is.read()로 출력해준다.
// System.out.println((char) is.read()); 문자로 표현 하면 콘솔화면에 출력해 주지 않는다 .그래서 숫자로 출력해준다.
}// main
}
package com.java.io05_console;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
public class ConsoleInput03 {
public static void main(String[] args) throws IOException {
// ...> 콘솔에 한글 입력하고 출력하기
InputStream is = System.in;
byte [] buffer=new byte[40];
int count = is.read(buffer);
//인코딩 방식 고려 출력
String st = new String (buffer,0,count,Charset.defaultCharset());
System.out.println(st);
}
}
package com.java.io05_console;
import java.io.IOException;
import java.io.OutputStream;
public class ConsoleOutput01 {
public static void main(String[] args) throws IOException {
// OutputStream > Console 출력
//1.바이트 쓰기
OutputStream os = System.out; //표준 출력 장치 관리 객체
os.write('j');
os.write('a');
os.write('v');
os.write('a');
os.write('\\r'); //생략 가능
os.write('\\n');
os.flush(); //메모리를 비운다 ,생략가능하지만 생략하지 말것
//2.바이트 배열 쓰기
byte [] buffer ="Hello".getBytes();
os.write(buffer);
os.write('\\n');
os.flush();
//3.바이트 배열 +offset,length
byte [] buffer02 = "Better the last smile than first simle".getBytes();
os.write(buffer02, 7, 8);
os.write('\\n');
os.flush();
//os.close 표준 출력은 jVM 에서 제거 하기 때문에 하지 않는 것이 좋다.
}
}