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 |