OutputStream 클래스는 추상 클래스로 모든 바이트 출력 스트림의 최상위 클래스이다.
import java.io.OutputStream;
public class Ex05_OutputStream {
public static void main(String[] args) {
int data = 97;
byte [] b = {65, 66, 67, 68, 69, 70};
try {
OutputStream os = System.out;
// OutputStream : 출력 byte 스트림
os.write(data); // 하위 1byte 출력
System.out.println();
os.write(b); // byte 배열 출력. ABCDEF
System.out.println();
os.write(b, 2, 3); // CDE. 2번째 인덱스에서 3개 출력
System.out.println();
System.out.write(b, 0, b.length); // off 인덱스로부터 len 개를 출력 장치로
System.out.println();
os.close();
System.out.println("end..."); // 출력 안됨
} catch (Exception e) {
e.printStackTrace();
}
}
}
os.write(data); 에서 data는 int형(4바이트) 이므로 1바이트씩 읽고 넘겨준다. 하위 1byte를 출력하는데 숫자 97를 문자로 읽어들이고 그 바이트값을 넘기면 ASCII코드의 97를 출력하게 된다. (a)
write(b); 에서 byte 배열인 B를 출력하면 1byte의 문자를 읽어들여 ASCII 코드 값을 반환하므로 ABCDEF.
OutputStream의 객체인 os 를 닫으면 close(); 마지막 end...는 출력되지 않는다. close()하면 바이트 입력 스트림을 닫고 사용하고 있던 시스템 자원들을 모두 반환한다.
import java.io.OutputStream;
public class Ex06_OutputStream {
public static void main(String[] args) {
try {
OutputStream os = System.out;
os.write(65); // 하위 1byte출력
// 출력 버퍼에 출력되며 출력 버퍼가 차지 않으면
// 실제 출력 장치로 보내지 않음
os.write(67);
os.write(68);
// 위내용 출력 방법
// 1) 첫번째 방법
os.flush(); // 출력 버퍼의 내용을 출력 장치로 보냄
// 2) 두번째 방법
// os.write(13);
// os.write(10); // 이것만 해도 가능
// 3) 세번째 방법
// System.out.println(); // 위의 내용이 출력됨
// 4) 네번째 방법
// os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
write(); 에 넣어준 문자는 바로 출력되지 않고 출력 버퍼에 저장되었다가 출력 버퍼가 차면 출력 장치로 보내준다.
따라서 출력 버퍼의 내용을 출력 장치로 보내는 flush() 메소드를 통해 모아뒀다가 출력할 수 있다.
두 번째 방법은 엔터(ASCII로 2byte)의 ASCII 값을 직접 입력 한 것이고, 세 번째 방법도 2번째와 비슷한 방식이다. 네 번째 방법은 바이트 입력 스트림을 닫고 자원을 반환하며 출력된다.
'쌍용강북교육센터 > 8월' 카테고리의 다른 글
0823_Java : Reader 클래스 (0) | 2021.08.23 |
---|---|
0823_Java : PrintStream, PrintWriter 클래스 [21.08.25 추가] (0) | 2021.08.23 |
0823_Java : InputStream 클래스 (0) | 2021.08.23 |
0820_Oracle[PL/SQL] : 예외처리 (0) | 2021.08.23 |
0820_Oracle[PL/SQL] : CURSOR 커서 (0) | 2021.08.23 |