Java -19

김정현·2024년 5월 14일
0

JAVA

목록 보기
21/25

입출력(I/O)

java.io 패키지

1. 입출력이란?

  • Input/Output 입력 / 출력
  • 컴퓨터 내부 또는 외부와 프로그램간의 데이터를 주고받는 것

%d(정수), %f(실수), %s(문자열), %c(문자)

2. 스트림(stream)

  • 데이터가 이동하는 통로

-입력 통로(입력 스트림)
-출력 통로(출력 스트림)

  • 바이트기반 스트림

    : 데이터 크기가 바이트 단위 / 바이트씩 읽어오는 스트림

1. 입력 스트림 - InputStream : 추상 클래스

기반 스트림 : 직접 데이터에 접근해서 읽어오는 스트림
FileInputStream
ByteArrayInputStream

참고)
Unsigned : 양의 정수
Unsigned Byte 0~255

입력 스트림의 끝에 도달한 경우 반환값이 -1 / 바이트 범위에서 부족 -> 더 큰 자료형
int read()

보조 스트림 : 다른 스트림에 추가적인 기능을 부여
-생성자 매개변수 InputStream
FilterInputStream : 보조스트림의 체계를 정리하기 위한 클래스
BufferedInputStream : 버퍼 기능 추가
DataInputStream : 기본 자료형으로 데이터를 읽을 수 있는 기능
-끝까지 다 읽은 후에 읽으면 EOFException 발생
EOF - End Of File

ObjectInputStream : 객체 형태로 변환하여 읽어오는 기능추가 

2. 출력 스트림 - OutputStream : 추상 클래스

기반 스트림 : 직접 데이터에 접근해서 출력하는 스트림
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) : 관점 지향 프로그래밍
관점 : 공통 관심사

  • 문자기반 스트림

    : 데이터 크기가 문자 단위(유니코드 - 2, 3 바이트)
  1. 입력 스트림 - 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() : 문자표의 종류
  2. 출력 스트림 - Writer : 추상 클래스
    기반 스트림 : 데이터 직접 접근하는 스트림

    FileWriter
     CharArrayWriter
     StringWriter

    보조 스트림 : 출력 스트림 + 추가 기능 - 생성자 매개변수 Writer

    OutputStreamWriter : 바이트 단위 스트림 -> 문자 단위 스트림으로 변환 가능
  • 표준입출력 : 콘솔에 입력, 출력 -JVM이 생성해 주는 객체
  1. System.in : InputStream

  2. System.out : PrintStream

  3. System.err : PrintStream

    PrintStream : 문자 기반 스트림, 기반 스트림, 버퍼

File

직렬화(Serialization)

  • 객체에 저장된 데이터를 스트림에 쓰기(write)위해 연속적인(serial) 데이터로 변환하는 것을 말한다.
  1. ObjectInputStream
  2. ObjectOutputStream

0개의 댓글