728x90
반응형
[Java] 파일 Copy 예제: 기반 스트림에 확장을 붙여 더욱 빠르게 연산시켜보자.
public class BufferedFileCopy {
public static void main(String[] args) {
// (바이트 기반 스트림을 활용)
// 기반 스트림 + 보조스트림을 활용해서
// 파일 복사 기능을 만들고
// 소요 시간을 측정하시오
// 파일 경로 (복사할 대상)
String sourceFilePath = "D:\\test\\a.zip";
String destinationFilePath = "copy1.zip";
// 소요 시간
long start = System.nanoTime();
try (FileInputStream fis = new FileInputStream(sourceFilePath);
FileOutputStream fos = new FileOutputStream(destinationFilePath);
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos)) {
int data;
while ((data = bis.read()) != -1) {
bos.write(data);
}
bos.flush(); // 매번 입출력을 발생하는 것이 아니라 한번에 입출력을 사용
long end = System.nanoTime();
// 소요 시간을 초 단위로 변환 --> 포멧팅
double seconds = (end - start) / 1000000000.0;
// String 클래스의 format 메소드 사용해보기
String resultFormat = String.format("소요 시간은 : %.6f초 입니다.", seconds);
// % 는 포멧 지정자의 시작
// f 지정자는 float, double 유형의 변수를 인자로 받아 처리하겠다
System.out.println(resultFormat);
} catch (Exception e) {
e.printStackTrace(); // 파일 저장 기능 가능
}
}
}
728x90
반응형
'Java > 자바 Stream' 카테고리의 다른 글
[Java] 85. 파일 입력 스트림(1) (문자 기반 스트림) (0) | 2024.05.20 |
---|---|
[Java] 84. 문자 기반 스트림 (0) | 2024.05.17 |
[Java] 82. 파일 Copy(바이트 기반 입/출력) (0) | 2024.05.16 |
[Java] 81. 파일 출력 스트림 (바이트) (0) | 2024.05.16 |
[Java] 80. 바이트 기반의 파일 입력 스트림 (0) | 2024.05.14 |