JAVA

자바(Java) I/O 개념

PGNV 2022. 1. 20. 10:15

I/O이란 ?

I/O는 입력(Input)/출력(Output)의 약자로, 컴퓨터 및 주변장치에 대하여 데이터를 전송하는 프로그램, 운영 혹은 장치를 일컫는 말입니다. 프로세서와 메모리, 확장 슬롯, 마더보드에서 일어나는 데이터 전송도 I/O라고 일컬어집니다

※자바에서는 하드웨어, 표준 콘솔, 네트워크 등과 스트림(1byte)의 데이터를 읽고 쓰거나 문자(2byte)를 읽고 쓰는 것 가능

 

 

 

 

 

 

 

 

 

 

Stream : 입출력 장치에 의한 데이터의 흐름

Source Stream : 입력 데이터의 시작 (~InputStream)

Sink Stream : 데이터가 처리되어 출력되는 끝 (~OutputStream)

Node Stream : Source와 Sink를 묶어서 지칭하는 단어

 

 

File Name

  • String getName() : file 이름 가져오기
  • String getPath() : 경로 가져오기
  • String getAbsolutePath() : 절대 경로 가져오기
  • String getParent() : parent directory 이름 가져오기
  • boolean renameTo(File newName) : 다른 이름으로 바꾸기

 

 

File Testing

  • boolean exists() : 존재하는지 확인
  • boolean canWrite() : 쓸 수 있는지 확인
  • boolean canRead() : 읽을 수 있는지 확인
  • boolean is File() : File 인지 확인
  • booelan isDirectory() : Directory 인지 확인

 

 

Directory 

  • boolean mkdir() : sub directory 생성
  • String[] list() : 현재 director에 있는 전체 File list를 리턴

 

 

그외의 메서드

  • long lastModified() : 마지막 수정된 날짜
  • long length() : 크기 알려주기 (byte)
  • boolean delete() : 삭제하기

 

 

 

 

 

Node Stream

Byte Stream

  • 1byte 단위 처리에 적합
  • Source Stream : InputStream, FileInputStream (입력)
  • Sink Stream : OutputStream, FileOutputStream (출력)

 

Character Stream (한글처리에 적합)

  • 문자(2byte) 단위 처리에 적합
  • Source Stream : Reader, FileReader (입력)
  • Sink Stream : Writer, FileWriter (출력)

 

 

 

Processing Stream (Node Stream 보조역할)

Byte Stream(1byte) / Character Stream(2byte)

Buffering : BufferedInputStream , BufferedOutputStream / BufferedReader, BufferedWriter

Filtering : FilterInputStream, FilterOutputStream / FilterReader, FilterWriter

Converting (byte -> character) : Byte Stream은 없음 / inputStreamReader, OutputStreamWriter

Object Serialization : ObjectInputStream, ObjectOutputStream / Character Stream은 없음

Data Conversion : DatalnputStream, DataOutputStream / Character Stream은 없음

Counting : LineNumberInputStream / LineNumberReader

Peeking ahead : PushbackInputStream / PushbackReader

Printing : PrintStream / PrintWriter

 

※Node Stream만을 이용해서 작업하는 것은 CPU의 효율성 및 속도 저하를 가져옴

 

 

 

 

직렬화(Serialization) : 객체가 입출력하기 위해 필요한것 (implements Serializable - Java1.8이상)

 

ObjectInputStream(File->객체화)

ObjectOutputStream(Book객체->File)

 

 

 

 

 

'JAVA' 카테고리의 다른 글

스프링 (SpringFramework)  (0) 2022.03.16
자바(Java) - 스레드(Thread)  (0) 2022.01.20
자바 컬렉션 프레임워크(Collection Framework)  (0) 2022.01.19
자바 제네릭(Generics)  (0) 2022.01.19
자바 예외 처리  (0) 2022.01.19