💡 Input과 Output의 약자로 컴퓨터 내부 또는 외부 장치와 프로그램 간의 데이터를 연동을 위한 자바 라이브러리이다.
단방향 데이터 송수신을 위해 스트림을 활용하여 데이터를 서로 주고 받게 된다.

💡 입출력 장치에서 데이터를 읽고 쓰기 위한 단방향 통로로 자바에서 제공하는 클래스이다.
각각의 장치마다 연결할 수 있는 스트림이 존재하며 바이트 단위 처리와 문자 단위 처리를 위한 스트림 등이 존재한다.
스트림은 기본적으로 1바이트 단위의 데이터만 지나가게 되고 주고 받는 데이터의 기본 단위가 1바이트 이므로 한 방향만 처리가 가능하여 입력 스트림과 출력 스트림을 따로 구성해야 한다.

💡 입출력을 사용함으로써 사용자로 부터 입력을 받거나 화면이나 스피커로 출력해 줄 수 있다. 또한 파일 형태로 프로그램의 종료 여부와 상관없이 영구적으로 데이터를 저장할 수도 있다.
File file = new File("file path");
File file = new File("C:/data/fileTest.txt");
| 리턴 타입 | 메소드 | 설명 |
|---|---|---|
| boolean | createNewFile() | 새로운 파일 생성 |
| boolean | mkdir() | 새로운 디렉토리 생성 |
| boolean | mkdirs() | 경로 상에 없는 모든 디렉토리 생성 |
| boolean | delete() | 파일 또는 디렉토리 삭제 |
import java.io.File;
import java.io.IOException;
public class Application {
public static void main(String[] args) {
/* 수업목표. File 클래스의 사용 용법을 이해할 수 있다. */
File file = new File("src/main/java/com/ohgiraffers/section01/file/test.txt");
try {
/* 설명. 생성 될 때 인지한 파일의 경로 및 파일명을 바탕으로 파일을 생성 후 성공 여부를 반환한다. */
boolean isSuccess = file.createNewFile();
System.out.println("파일 생성 여부: " + isSuccess);
} catch (IOException e) {
throw new RuntimeException(e);
}
/* 설명. 몇 가지 File에서 제공하는 메소드 확인 */
System.out.println("파일의 크기: " + file.length() + "byte");
System.out.println("파일의 경로: " + file.getPath());
System.out.println("현재 파일의 상위 경로: " + file.getParent());
System.out.println("파일의 절대 경로: " + file.getAbsolutePath());
boolean isDeleted = file.delete();
System.out.println("파일 삭제 여부: " + isDeleted);
}
}| 리턴 타입 | 메소드 | 설명 |
|---|---|---|
| boolean | canExecute() | 실행할 수 있는 파일인지 여부 |
| boolean | canRead() | 읽을 수 있는 파일인지 여부 |
| boolean | canWrite() | 수정 및 저장할 수 있는 파일인지 여부 |
| String | getName() | 파일 이름 리턴 |
| String | getParent() | 부모 디렉토리 리턴 |
| File | getParentFile() | 부모 디렉토리를 File객체로 생성 후 리턴 |
| String | getPath() | 전체 경로 리턴 |
| boolean | isDirectory() | 디렉토리인지 여부 |
| boolean | isFile() | 파일인지 여부 |
| boolean | isHidden() | 숨김 파일인지 여부 |
| long | lastModified() | 마지막 수정 날짜 및 시간 리턴 |
| long | length() | 파일 크기 리턴 |
바이트 단위(영어, 숫자, 특수기호 사용 시)
InputStream

OutputStream

문자 단위(한글까지 사용 시)
Reader

Writer

💡 스트림의 기능을 향상시키거나 새로운 기능을 추가하기 위해 사용한다.
보조 스트림만으로는 데이터를 주고 받는 대상에 대한 처리를 하는 것이 아니므로 입출력 처리가 불가능 하고 기반 스트림에 추가로 적용되어야 한다.
입출력 성능 향상
BufferedInputStream/BufferedOutputStream
- 입출력 속도 향상 및 한 줄씩 출력 및 입력 관련 메소드 제공 보조 스트림
형변환 보조스트림
InputStreamReader/OutputStreamWriter
기본 자료형 데이터 입출력
DataInputStream/DataOutputStream
객체 자료형 데이터 입출력
ObjectInputStream/ObjectOutputStream
- 객체 단위 입출력을 위한 보조 스트림
