Java I/O

이상민·2021년 8월 26일
0
post-thumbnail

1. Stream/Buffer/Channel

데이터의 입출력을 전달하는 방법들

1-1. Stream

  • 데이터가 들어온 순서대로 흐르는 전달 방식

  • blocking 방식으로 동작한다

1-2. Buffer

  • 데이터를 모아서 전달하는 방식

  • 데이터의 입력이 즉시 전송되는 stream과 달리 중간에서 이들을 모아 한번에 보낸다

  • 병목은 거의 항상 I/O에 있기 때문에, 오버헤드를 크게 줄일 수 있다

1-3. Channel

  • java 4에서 추가된 java.nio 패키지의 기본 I/O 방식

  • 양방향으로 연결돼 InputStream과 OutputStream처럼 나뉘지 않는다

  • buffer를 통해서만 사용할 수 있다

  • non-blcoking 방식으로도 동작할 수 있다


2. InputStream과 OutputStream

  • Stream은 단방향이기 때문에 InputSream과 OutputStream으로 나뉜다

  • 자바의 모든 바이트 스트림은 InputStream 또는 OutputStream 기반으로 되어있다


3. Byte와 Character 스트림

  • 기존 바이트 스트림에 문자열을 읽고 쓰는 메소드는 바이트 단위로 Latin-1 포멧에만 작동하는 문제가 있어 문자 스트림 클래스인 Reader와 Writer가 추가되었다


4. 표준 스트림

  • System 클래스에 있는 in, out, err 스트림 필드들을 통틀어 표준 스트림이라 부른다

4-1. System.in

  • InputStream 객체

4-2. System.out

  • OutPutStream을 상속한 PrintStream 객체

4-3. System.err

  • OutPutStream을 상속한 PrintStream 객체

5. 파일 읽고 쓰기

5-1. File 클래스

  • 파일의 크기, 속성, 이름등 메타데이터와 파일 생성 삭제 기능을 제공한다
File file = new File("/file.txt");

5-2. FileReader 클래스

  • 문자 스트림으로 파일을 읽는다

  • 배열을 주어야한다

char[] cbuf = new char[100]
FileReader fileReader = new FileReader("/file.txt");
fileReader.read(cbuf)

5-3. FileWriter 클래스

  • 바로 작성할 수 있다
FileWriter fileWriter = new FileWriter("/file.txt");
fileWriter.write()
profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글