Input과 Output의 약자, 컴퓨터 내부 또는 외부 장치와 프로그램 간의 데이터를 주고 받는 것
input : 입력
-> 외부에서 내부로 값이 들어오는 것
output : 출력
-> 내부에서 외부로 값이 나가는 것
파일 시스템의 파일을 표현하는 클래스
파일 크기, 파일 속성, 파일 이름 등의 정보와 파일 생성 및 삭제 기능 제공
File 객체 생성
File file = new File("파일 경로");
File file = new File("C:/dev/test.txt");
입출력 장치에서 데이터를 읽고 쓰기 위해서 자바에서 제공하는 클래스
모든 스트림은 단방향이며 각각의 장치마다 연결할 수 있는 스트림 존재
하나의 스트림으로 입출력을 동시에 수행할 수 없으므로 동시에 수행하려면 2개의 스트림 필요
Stream : 입/출력 통로 역할(데이터가 흘러가는 통로)
기본적으로 Stream은 단방향
Point❗ 프로그램을 기준으로
출력 - 내보내면 쓰기 write();
출력(프로그램 -> 파일) - .write(); 문자는 1개씩 쓰고, 문자열은 한번에 쓰기
입력 - 가져오면 읽기 read();
입력(프로그램 <- 파일) - 숫자로 한개씩 읽어오고read(); 내용이 없으면 -1 반환
1byte (a,b,c ...)
입력,출력
FileOutputStream : write(); (출력) 내부(프로그램) -> 외부(파일)
FileInputStream : read(); (입력) 외부(파일) -> 내부(프로그램)
2byte (김, ...)
읽기, 쓰기
FileWriter : write(); (파일 출력) 내부(프로그램) -> 외부(파일)
FileReader : read(); (파일 입력) 외부(파일) -> 내부(프로그램)
catch(IOException e) {
// FileNotFoundException은 IOException의 자식임.
// 다형성 적용으로 IOException 하나로 둘다 잡을 수 있다!
System.out.println("예외 발생");
e.printStackTrace(); // 예외 추적
// 사용한 스트림 자원반환(통로 없앰) --> 필수 작성!!!
// 프로그램 메모리 관리 차원에서 항상 다쓰면 끊어줌
} finally {
try {
fos.close(); // 예외 발생 하여, try - catch 구문으로 한번 더 작성
} catch (IOException e) {
e.printStackTrace();
}
}
FileWriter
문자열 Writer시
String str = "안녕하세요. Hello. 1234 !#";
버퍼에 문자열이 들어가는데 fw.close();를 통해 버퍼에서 문자열이 밀려나가 출력된다.
fw.write(str);
프로그램 - 스트림 - 파일
스트림공간에 있지만 프로그램과 스트림 사이에 스트림 자원반환(통로 없앰) 으로 파일 공간으로 넘어감