초보 프로그램 개발자

[ 5주차 ] Java - 버퍼를 사용해서 파일을 읽어오기 본문

교육 일지/java

[ 5주차 ] Java - 버퍼를 사용해서 파일을 읽어오기

Ji_HG 2023. 5. 31. 16:59
버퍼를 사용하여 파일을 읽어내는 가장 기본적인 방법
public class Test8 {

	public boolean fileCopy(String path1, String path2) {
		// File : 파일 안에 있는 내용을 수정할수는 없다.
		// 파일을 찾아가는 경로가 있는지 없는지, 이름은뭔지 사이즈는 뭔지 등등
		// 파일의 정보를 가지고 있지만 내용수정은 불가능
		File f = new File(path1);
		
		if (!f.exists()) { // 파일이 있는지 없는지 확인
			return false;
		}

		try {
			FileInputStream fis = new FileInputStream(f);
			FileOutputStream fos = new FileOutputStream(path2);
			
			// 버퍼를 사용해서 파일을 읽어내는 가장 기본적인 방법
			int data = 0;
          		  // byte배열의 크기는 128,256,512,1024........
			byte[] buffer = new byte[1024];
			
			while ((data = fis.read(buffer, 0, 1024)) != -1) {
				fis.read(buffer, 0, 1024);
				fos.write(buffer, 0, data); // fos로 복사
				fos.flush();
			}
			fis.close();
			fos.close();
			// 버퍼를 사용해서 파일을 읽어내는 가장 기본적인 방법
		} catch (Exception e) {
			System.out.println(e.toString());
			return false;
		}
		return true;
	}

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		String str1, str2;
		Test8 ob = new Test8();
		
		System.out.print("원본 파일 경로 : ");
		str1 = sc.next();
		System.out.print("복사 할 경로 : ");
		str2 = sc.next();

		if (ob.fileCopy(str1, str2)) {
			System.out.println("파일 복사 성공");
		} else {
			System.out.println("파일 복사 실패...");
		}
	}
}

 

byte배열의 크기를 1024로 주었다고 파일의 글자를 1024자 읽어와서 저장하는것이 아닌

1024byte를 읽어와 처리한뒤 다시 읽어온다음부터 1024byte를 읽어와 처리하는것을 반복하여

파일의 끝까지 읽어온다.

 

파일에서 바로 읽어와도 되는데 buffer를 사용하는 이유는,

파일까지 가서 읽어오는 시간에 buffer에 1024byte 만큼 메모리에 가져와

메모리에서 읽어오는 시간이 더 빠르기 때문이다.

'교육 일지 > java' 카테고리의 다른 글

[ 5주차 ] Java - 객체의 직렬화  (0) 2023.06.01
[ 5주차 ] Java - FileFilter  (0) 2023.05.31
[ 5주차 ] Java - File  (0) 2023.05.31
[ 5주차 ] Java - 파일 입출력  (0) 2023.05.31
[ 5주차 ] Java - Stream  (0) 2023.05.31