입출력(I/O)
java.io 패키지
%d(정수), %f(실수), %s(문자열), %c(문자)
-입력 통로(입력 스트림)
-출력 통로(출력 스트림)
기반 스트림 : 직접 데이터에 접근해서 읽어오는 스트림
FileInputStream
ByteArrayInputStream
참고)
Unsigned : 양의 정수
Unsigned Byte 0~255
입력 스트림의 끝에 도달한 경우 반환값이 -1 / 바이트 범위에서 부족 -> 더 큰 자료형
int read()
보조 스트림 : 다른 스트림에 추가적인 기능을 부여
-생성자 매개변수 InputStream
FilterInputStream : 보조스트림의 체계를 정리하기 위한 클래스
BufferedInputStream : 버퍼 기능 추가
DataInputStream : 기본 자료형으로 데이터를 읽을 수 있는 기능
-끝까지 다 읽은 후에 읽으면 EOFException 발생
EOF - End Of File
ObjectInputStream : 객체 형태로 변환하여 읽어오는 기능추가
기반 스트림 : 직접 데이터에 접근해서 출력하는 스트림
FileOutputStream
ByteArrayOutputStream
보조 스트림 : 다른 스트림에 추가적인 기능을 제공 - 생성자 매개변수 OutStream
FilterOutputStream : 보조스트림의 체계를 정리하기 위한 클래스
BufferedOutputStream: 출력 스트림 + 버퍼기능
DataOutputStream : 기본 자료형으로 쓰기 기능 제공
ObjectOutputStream : 객체형태로 데이터를 출력하는 기능 추가
참고)
데코레이터 패턴
class BufferedInputStream extends InputStream {
private InputStream in;
public BufferedInputStream(InputStream in) {
this.in = in;
}
// read 메서드의 기능은 추가적인 기능과 함께 다른 스트림의 기능을 대신 수행
public int read() {
//버퍼 기능에 대한 코드 .. //추가 기능
int byte = in.read();
//버퍼 기능에 대한 코드.. //추가 기능
return byte;
}
AOP (Aspect Oriented Programming) : 관점 지향 프로그래밍
관점 : 공통 관심사
입력 스트림 - Reader : 추상 클래스
기반 스트림 : 데이터에 직접 접근하는 스트림
FileReader
CharArrayReader
StringReader
보조 스트림 : 입력스트림 + 추가 기능 - 생성자 매개변수 Reader
FilterReader
-BufferedReader : 버퍼 기능
InputStreamReader : 바이트 단위 스트림 -> 문자 단위 스트림으로 변환 기능
:Reader로 사용이 불가한 InputStream인 경우 변환
:Reader로 사용이 불가한 InputStream인 경우 변환
:생성자 매개변수 String charSetName, Charset cs : 변환하려고 하는 문자표(유니코드..)
2바이트 유니코드 : ISO8859_1 / EUC-KR, CPC949
3바이트 유니코드 : UTF-8
String getEncoding() : 문자표의 종류
출력 스트림 - Writer : 추상 클래스
기반 스트림 : 데이터 직접 접근하는 스트림
FileWriter
CharArrayWriter
StringWriter
보조 스트림 : 출력 스트림 + 추가 기능 - 생성자 매개변수 Writer
OutputStreamWriter : 바이트 단위 스트림 -> 문자 단위 스트림으로 변환 가능
System.in : InputStream
System.out : PrintStream
System.err : PrintStream
PrintStream : 문자 기반 스트림, 기반 스트림, 버퍼
File
직렬화(Serialization)