Java 08

2017. 2. 4. 00:18Work/Java

728x90
반응형

File class

File

File f = new File( [String path] );

입/출력 방향의 기준은 항상 JVM(자바 프로그램)이다.

파일에 데이터 쓰기, 읽기, 파일에 대한 데이터 정보, 파일 크기, 위치, 파일 삭제 또는 이름을 바꾸는 작업 등 

-> 파일을 추상화한 클래스

파일

파일 시스템

OS에서 파일을 관리하는 체계

사용자 관점에서 의미하는 파일이 아닌 OS 시스템 관점에서 의미하는 파일

일반 : 사용자 관점에서 의미하는 파일과 같은 의미의 바이너리 파일

디렉토리 : 일반 파일을 관리하기 위한 파일

디바이스 : 시스템 하드웨어에 접근하기 위해서 사용

지명 파이프 : FIFO를 OS에서 사용하기 위해 파일로 생성한 것


IO

IO 의 동작(시스템 혹은 프로그램 레벨에서 bit 단위로 이루어짐)

java.io 패키지에 포함되어 있다.


Stream

바이트 스트림

-> Java.io 중 가장 기본이 되는 클래스는 InputStream과 OutputStream 클래스 이다.

-> 데이터 처리 단위가 1byte, 입출력이 1byte씩

스트림은 입력 전용과 출력 전용으로 구분, 하나의 스트림으로 입출력을 동시에 수행하지는 않는다.

- FIFO 구조를 갖고 있다.

데이터의 앞뒤 순서가 바뀌는 일은 발생하지 않는다.

- 순차적 접근만 허용 한다.

데이터 소스로부터 순차적으로 접근해야 한다. File 중간에 특정 부분의 데이터를 가져오거나 데이터를 쓰는 것 불가

- 단방향성을 갖고 있다.

특정 매체에 데이터를 읽고 쓰려면 읽기 전용 스트림과 쓰기 전용 스트림이 필요하다.

- 스트림을 사용하면 지연 현상이 발생한다.

스트림을 사용해서 프로그래밍을 하면 스트림이 동작하는 동안에는 해당 프로그램(스트림을 담당하는 스레드)이 블록(blocking)되면서 지연 상태로 빠진다.

스트림 동작이 끝나야 블록이 해제되면서 동작을 다시 시작한다.

- 유연한 구조를 갖고 있다.

여러 스트림 객체를 조합해서 사용할 수 있기 때문에 입력 스트림으로 받은 데이터를 곧바로 출력 스트림으로 돌릴 수 있다.

입력 스트림 : 자바 프로그램을 기준으로 데이터가 프로그램으로 유입되는 스트림

출력 스트림 : 자바 프로그램을 기준으로 데이터가 프로그램 외부로 나가는 스트림

문자 스트림 : 문자를 읽고 쓰는 단위가 16bit로 문자 혹은 문자열을 처리하기에 적합한 스트림. 16bit 크기를 갖는 유니코드를 다룬다.

바이트 스트림 : byte 단위 즉, 8bit 단위로 데이터를 읽고 쓰기 위한 스트림

InputStream class

- FileInputStream

- ObjectInputStream

바이트 단위로 객체를 읽을때 사용하는 클래스, readObject() 메소드는 역직렬화 기능

- FilterInputStream

- BufferedInputStream

- DataInputStream

-> 추상 클래스, new 키워드 사용 불가, 대부분의 메소드들이 IOException을 던진다. close() 메소드로 스트림을 닫아줘야 한다.

OutputStream class

- FileOutputStream

- ObjectOutputStream

바이트 단위로 객체를 쓸때 사용하는 클래스, writeObject() 메소드는 직렬화를 수행하는 기능

- FilterOutputStream

- BufferedOutputStream

- DataOutputStream

-> 추상 클래스, new 키워드 사용 불가, 대부분의 메소드들이 IOException을 던진다. close() 메소드로 스트림을 닫아줘야 한다.

Reader class

- BufferedReader

-> 입력의 성능 향상

- InputStreamReader

- FileReader

-> 보통 텍스트 파일 입력시 가장 많이 사용

Writer class

- BufferedWriter

-> 출력의 성능 향상

- OutputStreamWriter

- FileWriter

-> 보통 텍스트 파일 출력시 가장 많이 사용

-> 자료의 입출력을 도와주는 중간 매개체

728x90
반응형

'Work > Java' 카테고리의 다른 글

Java 10  (0) 2017.02.10
Java 09  (0) 2017.02.05
Java 07  (0) 2017.02.03
Java 06  (0) 2017.02.01
Java 05  (0) 2017.01.30