230309 JAVA_I.O.

Myung A Lee·2023년 3월 9일
0

JAVA

목록 보기
11/13
post-thumbnail

JAVA

JAVA Input & Output

Java에서는 System 외부로부터의 Data도 다룰 수 있다. 이렇게 외부에서 내부로 또는 내부에서 외부로 이동하는 데이터의 흐름을 Stream이라고 한다.
Java.io package는 크게 Input Stream 과 Output Stream으로 나뉜다. 또한 각각 Byte 기반과 character 기반으로 분류 된다.

Input Stream 과 Output Stream은 byte 기반 최 상위 class이며 일반적으로 상속받아 특화된 File, Buffered, Data Input/Output Stream이 사용 된다.

File 객체

  • File은 I/O에 해당하는 클래스는 아니고 file/directory 등을 다룰 수 있게 해 주는 객체이다. File에 Data를 읽고 쓰는 기능은 Stream을 통해 이루어 진다.
    즉, 파일을 다루는 객체는 File 이고 객체화하여 Stream이 IO를 진행한다.
  • createNewFile(), mkdir(), mkdirs(), delete() 등의 메서드를 지원한다.

    File file = new File("c:\Temp\file.txt"); // 파일이 읽고, 쓰여질 경로를 지정하여 객체화 가능

Input/Output Stream의 사용

기본적으로 Inputstream을 사용하여 가져온 내용을 읽고(Read) Outputstream을 사용하여 쓰고(Write) 사용한 스트림들을 비우고(Flush) 닫는(Close) 과정을 거친다.
이를 순서로 정리하면 다음과 같다.

1. 파일 위치를 설정한다.

2. 파일을 다루기 위해 File 객체를 객체화 한다.

3. 읽어올 때 필요한 Stream을 준비한다. (Reader)

4. 읽어와 기록한다. (writer)

5. 사용한 자원을 비우고(Flusth) 닫는다(Close).

보조스트림

보조 스트림은 주 스트림과 연결되어 추가 기능을 제공해 주는 스트림이다.

보조스트림 : Buffered

성능 향상을 위해 주로 사용한다. 전송받은 내용들을 모아서 한꺼번에 전송 할 수 있도록 해주는 임시 저장소이다.

보조스트림 : Data

Java의 데이터 타입을 갖는 데이터를 전송할 수 있게 한다.

보조스트림 : Object

최상위 객체인 Object를 다룰 수 있는 보조 스트림으로 객체, 배열, 컬렉션 등 다양한 형태가 들어갈 수 있다. 단, Class의 경우 직렬화 하지 않으면 전달되지 않는다. 또한 역직렬화를 해주어야만 한다.
다음과 같은 오류가 발생한다면 직렬화를 해주어야 한다. 오류가 발생한 해당 클래스에 implements Serializable 해주면 해결 된다.

JAVA NIO

  • Java NIO는 NEW Input/Output의 약자로 기존 IO에 Asynchronous와 Channel이라는 개념이 추가 되었다.

  • 또한 기존 IO에서 파일의 경로, 정보 및 각정 처리등을 File 객체를 통해 수행한 것에 반해 NIO에서는 각각 다른 클래스로 전문화 하였다.

0개의 댓글