[ 파일 ]
- 파일과 , 디렉토리(식별자) 를 통 틀어서 파일 이라고 한다.
- 경로 구분은 \ 로 하고 시스템 마다 다를 수 있다.
- 디스크 상의 존재 여부에 따라 논리적 파일 , 물리적 파일로 나뉜다.
- IO 패키지에서 제공하는 File 클래스는 디렉토리를 나타낼 수도 있고 파일도 나타낼 수 있다.
- 사용 가능한 메소드는 아래와 같다 .. 더 있으니까 API 문서를 참고
createNewFile , mkdir, mkdirs, delete, lastModified, exists , isFile , isDirectory, getParent, getName
절대경로 , 상대경로
절대경로 : Root로 부터 출발하는 경로 ( C:\Program Files\Java\jdk1.8.0_221 ) getPath() 로 경로 얻어낼 수 있음
상대경로 : 현재 위치가 출발 점 ( . (현재위치) ..(상위폴더) ) getCanonicalPath() 로 경로 얻어낼 수 있음
[ 스트림 ]
스트림은 Input 과 Output 이 있으며 , byte 단위 연산과 char 단위 연산으로 나뉜다.
FileOutputStream
- 외부 자원에 접근
- 생성자에 매개변수로 File 을 주거나 경로를 넣을 수 있다.
- 2번째 매개변수로 true 로 주면 파일을 쓸 때 계속 붙여 넣는다 ( appendable )
FileInputStream
- 파일에 있는 내용을 읽을 수 있음
- JDK 1.7 부터 아래와 같이 사용할 수 있다. 단 조건은 AutoCloseable 을 구현한 클래스만 사용 가능
InputStream
- byte 입력 스트림을 나타내는 모든 클래스의 슈퍼 클래스
- 입력 스트림에 엔터( \r + \n ) 가 포함된다.
InputStreamReader
- byte -> char 바이트를 읽어 지정된 문자로 디코딩(브릿지)
BufferedReader
- 문자를 버퍼링 하므로, 배열 및 행을 효율적으로 읽을 수 있음
PrintWriter
- 문자열을 다양한 형태로 출력 스트림에 출력
- 반드시 flush() 를 해야한다. 버퍼를 비워주지 않으면 어떠한 기능도 수행하지 않음
FileWriter
파일에 문자를 쓰기 위해 사용
데코레이션 패턴
InputStream -> InputStreamReader -> BufferedReader ( String )-> PrintWriter -> FileWriter ( File )
데코레이션 패턴의 예
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class IOEx3 {
public static void consoleToFile(String fileName) {
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
FileWriter fw = null;
// 줄 단위로 쓰는거
PrintWriter pw = null;
try {
//표준 입력
is = System.in;
//
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
fw = new FileWriter(fileName);
pw = new PrintWriter(fw);
String line = null;
while((line = br.readLine()) != null) {
//fw.write(line);
pw.printf("%s\n", line);
// pw.write(line + "\r\n");
}
//내용을 비운다 .. (출력을 보장)
pw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 자원 해제 : 생성된 역순으로 닫는다.
MyUtils.closeAll(br, isr, is);
}
}
public static void main(String[] args) {
consoleToFile("console.txt");
}
'자바프로그래밍' 카테고리의 다른 글
파일입출력(Data : InputStream, OutputStream) (0) | 2020.06.01 |
---|---|
[JAVA] 예외처리 (0) | 2020.04.29 |
[JAVA] 로또 프로그램(컬렉션 사용) (0) | 2020.04.26 |
List (0) | 2020.04.23 |
컬렉션 (0) | 2020.04.23 |