목적
기본적인 File 입출력을 사용해보면서 익히기
기본 사용
package file;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.file.FileSystems;
public class FileEx01 {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("input.txt");
System.out.println("운영체제별 디렉토리 구분자 ::: "+FileSystems.getDefault().getSeparator());
fos = new FileOutputStream("src\\file/output.txt");
int i;
while((i=fis.read()) != -1 ) {
fos.write(i);
}
}catch (Exception e) {
System.out.println(e.getMessage());
}finally {
try {
fis.close();
fos.close();/*반드시 닫아줘야 합니다.*/
} catch (Exception e2) {
System.out.println(e2.getMessage());
}
}
}
}
응용 사용
public class FileEx02 {
public static void main(String[] args) {
Long startTime = System.currentTimeMillis();
try (BufferedInputStream bis= new BufferedInputStream(new FileInputStream("C:\\Users\\kks\\Downloads\\input\\원노트.zip"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\\\Users\\\\kks\\\\Downloads\\\\output\\\\원노트.zip"), 1024*4);
) {
int i;
while((i=bis.read()) != -1 ) {
bos.write(i);
}
}catch (Exception e) {
System.out.println(e.getMessage());
}finally {
System.out.println("버퍼 사용 파일 입출력 완료 ::: " + ((System.currentTimeMillis()-startTime)/1000 ));
}
}
}
결과 = 버퍼 사용 파일 입출력 완료 ::: 35
파일 크기는 1.67GB
package file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.net.URL;
public class FileEx02 {
public static void main(String[] args) {
Long startTime = System.currentTimeMillis();
try (BufferedInputStream bis= new BufferedInputStream(new URL("https://upload.wikimedia.org/wikipedia/commons/6/62/%EC%84%9C%EC%9A%B8%ED%8A%B9%EB%B3%84%EC%8B%9C_%EC%A0%84%EA%B2%BD_%EC%82%AC%EC%A7%84_%EC%82%AC%EB%B3%B8_-%EC%84%9C%EC%9A%B8%EC%84%B1%EA%B3%BD1.jpg").openStream());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("src/pic.jpg"), 1024*4);
) {
int i;
while((i=bis.read()) != -1 ) {
bos.write(i);
}
}catch (Exception e) {
System.out.println(e.getMessage());
}finally {
System.out.println("무료 사진 가져오기!");
}
}
}
데이터 소스가 로컬이건, 인터넷이건 결국은 입출력 구조를 따릅니다.
핵심 키워드
- try - with - resource
- AutoCloseable, Closeable
- 버퍼스트림(보조스트림)