티스토리 뷰

java.io.BufferedReader / BufferedWriter - 파일 복사

빠른 속도로 읽거나 쓰고자 하는 작업에 사용 가능하다. 작업시 메모리 즉 Buffer를 줌으로써 읽기, 쓰기시 성능 향상을 기대 할 수 있다. BufferedWriter 의 경우 버퍼를 잡아 놓았기 때문에 반드시 flush() / close() 를 반드시 호출해 주어야 한다. 

BufferedReader/BufferedWriter 생성

BufferedReader br = new BufferedReader(Reader r); // Reader r 를 인자로 생성
BufferedReader br = new BufferedReader(Reader r, int size); // Reader r 과 buffer 사이즈를 받아서 생성

BufferedWriter bw = new BufferedWriter(Writer w); // Writer w 를 인자로 생성 
BufferedWriter bw = new BufferedWriter(Writer w, int size); // Writer w 과 buffer 사이즈를 받아서 생성

예제

package com.umejintan.file;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileCopy {

	public static void main(String[] args) {
		
		FileReader fr = null;
		FileWriter fw = null;
		BufferedReader br = null;
		BufferedWriter bw = null;
		
		try{
			// 복사 할 파일을 지정
			File source = new File("c:\\example\\File\\umejintan.txt");
			// 복사 될 곳을 지정
			File des = new File("c:\\example\\File\\umejintan_copy.txt");
			
			fr = new FileReader(source);
			fw = new FileWriter(des);
			
			// BufferedReader 와 BufferedWriter 를 생성 
			br = new BufferedReader(fr);
			bw = new BufferedWriter(fw);
						
			int readBuffer = 0;
			char [] buffer = new char[512];
			// BufferedReader 로 부터 파일의 내용을 읽어와 저장한다.
			while((readBuffer = br.read(buffer)) != -1) {
				bw.write(buffer, 0, readBuffer);
			}
			
			// Create a file object
			File copyfile = new File("c:\\example\\File\\umejintan_copy.txt");			
			// 1. check if the file exists or not
			boolean isExists = copyfile.exists();			
			if(isExists) {
				System.out.println("The file is copied.");
			}
		} catch (IOException e) {
			System.out.println(e);
		} finally {
			try{
				br.close();
				bw.close();
			} catch(IOException io) {}
		}
	}
}

실제로 파일을 복사해야 하는 작업을 진행해야 한다면 char 로 읽는 방식 보다는 byte 로 읽어서 작업하는 것을 추천한다. 모든 파일은 byte 로 저장되어 있기 때문이다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함