import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class ex5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
FileInputStream f1 = null;
FileInputStream f2 = null;
System.out.println("전체 경로명이 아닌 파일 이름만 입력하는 경우, vk일은 프로젝트 폴더에 있어야 합니다.");
System.out.print("첫번째 파일 이름을 입력하세요>>");
String fileName1 = sc.next();
System.out.print("두번째 파일 이름을 입력하세요>>");
String fileName2 = sc.next();
try {
f1 = new FileInputStream("C:\\temp\\"+fileName1);
f2 = new FileInputStream("C:\\temp\\"+fileName2);
System.out.println(fileName1 + "와 " + fileName2 +"를 비교합니다.");
if(compareFile(f1,f2)) {
System.out.println("파일이 같습니다.");
}
else {
System.out.println("파일이 같지않습니다.");
}
if(f1 != null) f1.close();
if(f2 != null) f2.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static boolean compareFile(FileInputStream f1, FileInputStream f2) throws IOException {
byte[] f1Buf = new byte[1024];
byte[] f2Buf = new byte[1024];
int f1Cnt=0,f2Cnt;
while(true) {
f1Cnt = f1.read(f1Buf,0,f1Buf.length);
f2Cnt = f2.read(f2Buf,0,f2Buf.length);
if(f1Cnt != f2Cnt) return false;
if(f1Cnt == -1) break;
for(int i=0;i<f1Cnt;i++) {
if(f1Buf[i] != f2Buf[i]) return false;
}
}
return true;
}
}
결과
전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다.
첫번째 파일 이름을 입력하세요>>elvis1.txt
두번째 파일 이름을 입력하세요>>test.txt
elvis1.txt와 test.txt를 비교합니다.
파일이 같지않습니다.
전체 경로명이 아닌 파일 이름만 입력하는 경우, vk일은 프로젝트 폴더에 있어야 합니다.
첫번째 파일 이름을 입력하세요>>elvis1.txt
두번째 파일 이름을 입력하세요>>elvis1-복사본.txt
elvis1.txt와 elvis1-복사본.txt를 비교합니다.
파일이 같습니다.
'명품JAVA프로그래밍 > 8장 입출력 스트림과 파일 입출력' 카테고리의 다른 글
[명품JAVA프로그래밍] 8장 실습문제 8번 (0) | 2022.02.24 |
---|---|
[명품JAVA프로그래밍] 8장 실습문제 6번 (0) | 2022.02.24 |
[명품JAVA프로그래밍] 8장 실습문제 4번 (0) | 2022.02.24 |
[명품JAVA프로그래밍] 8장 실습문제 3번 (0) | 2022.02.24 |
[명품JAVA프로그래밍] 8장 실습문제 2번 (0) | 2022.02.24 |