import java.io.*; // java.io패키지에 있는 클래스 모두를 import시킨다. 즉 이제 java.io패키지에 있는 클래스를 사용할 수 있다.
import java.util.Scanner; // java.util패키지에 있는 Scanner클래스를 import시킨다. 즉 이제 Scanner클래스를 사용할 수 있다.
public class FileCopy { // FileCopy클래스 시작
public static void main(String[] args) { // 메인 메소드 시작
Scanner scanner = new Scanner(System.in);// 키보드로부터 입력 받는 바이너리 값을 문자열, 실수등으로 바꿔서 응용프로그램에 넣어주기위해서 scanner 객체 생성
System.out.println("복사를 원하는 파일의 전체 경로를 입력하세요:");//복사를 원하는 파일의 전체 경로를 입력하세요: 를 콘솔창에 출력
String scrFileName = scanner.nextLine();// 원본 파일이름을 키보드로부터 읽어와서 scrFileName에 저장한다.
if (scrFileName.contains(".jpg")){ //입력 받은 파일명에서 확장자 검사하며, jpg파일이면 바디 실행
FileInputStream fileInputStream = null;// 파일 입력 스트림 객체를 null로 초기화
FileOutputStream fileOutputStream = null;// 파일 출력 스트림 객체를 null로 초기화
try { // 예외처리를 위해서 try - catch구문을 사용한다. => 여기서는 파일 읽기,쓰기, 닫기등을 하는 동안 예외가 발생할 수 있기 때문에 사용했다.
File destFile = new File("C:\\Temp\\img_copy.jpg");// 파일 객체를 생성하면서 파일 경로를 C:\\Temp\\img_copy.jpg로 설정해주었다. 이는 복사본 파일에 해당한다.
System.out.println("이미지파일을 복사합니다.");// 이미지파일을 복사합니다 를 콘솔창에 출력
// File & FileInputStream & FileOutputStream 클래스이용 이미지 복사 코딩
fileInputStream = new FileInputStream(scrFileName);// 파일 입력 스트림 객체를 생성 scrFileName은 원본파일 경로(이름)이다
fileOutputStream = new FileOutputStream(destFile); // 파일 출력 스트림 객체를 생성 destFileName은 복사본파일 경로(이름)이다
int c; // c는 char를 의미하며 문자이다. 숫자로 표현
while ((c = fileInputStream.read()) != -1)// 파일 끝을 만날때까지 반복하는 반복문이다.
{ // 반복문 시작
fileOutputStream.write(c); // 복사본 파일에 .jpg 복사
} // 반복문 끝
fileInputStream.close(); //파일 입력 스트림 객체 닫기
fileOutputStream.close(); //파일 출력 스트림 객체 닫기
}catch (IOException e){ //예외를 catch하는 코드이다.IOException은 예외타입(예외클래스)이다.
System.out.println("입출력 오류가 발생했습니다.");// 예외를 어떻게 처리할 것인지 작성하는 부분이다. 콘솔에 파일 입출력 오류 라고 출력하도록 했다.
} // catch문의 바디 종료
} // if문 바디 종료
else if (scrFileName.contains(".txt")){//입력 받은 파일명에서 확장자 검사하며, txt파일이면 바디 실행
FileReader filereader = null; // Filereader객체를 null로 초기화
FileWriter filewriter = null; // Filewriter객체를 null로 초기화
try { // 예외처리를 위해서 try - catch구문을 사용한다. => 여기서는 파일 읽기,쓰기, 닫기등을 하는 동안 예외가 발생할 수 있기 때문에 사용했다.
File destFile = new File("C:\\Temp\\txt_copy.txt");// 파일 객체를 생성하면서 파일 경로를 C:\\Temp\\img_copy.txt로 설정해주었다. 이는 복사본 파일에 해당한다.
System.out.println("텍스트파일을 복사합니다.");//텍스트파일을 복사합니다. 를 콘솔창에 출력
// File & FileReader & FileWriter 클래스 이용 텍스트 파일 복사 코딩
filereader = new FileReader(scrFileName);// Filereader객체를 생성 scrFileName은 원본파일 경로(이름)이다
filewriter = new FileWriter(destFile);// Filewriter객체를 생성 destFileName은 복사본파일 경로(이름)이다
int c; // c는 char를 의미하며 문자이다. 숫자로 표현
while ((c = filereader.read()) != -1)// 파일 끝을 만날때까지 반복하는 반복문이다.
{ // 반복문 시작
filewriter.write(c); // 복사본 파일에 .txt 복사
} // 반복문 끝
filereader.close(); // Filereader객체 닫기
filewriter.close(); // Filewriter객체 닫기
}catch (IOException e){ // 예외를 catch하는 코드이다.IOException은 예외타입(예외클래스)이다.
System.out.println("입출력 오류가 발생했습니다.");// 예외를 어떻게 처리할 것인지 작성하는 부분이다. 콘솔에 파일 입출력 오류 라고 출력하도록 했다.
} // catch문의 바디 종료
} // else if문 바디 종료
else // 위의 조건 모두 만족하지않을때
System.out.println("처리할 수 없는 파일 형태입니다.");// 처리할 수 없는 파일 형태입니다. 를 콘솔창에 출력
} // 메인메소드 종료
} // FileCopy클래스 종료
원래 일정대로라면 java계산기(2)블로그를 올렸어야하는데 문제해결이 아직덜되어 틈틈히 복습한 파일처리 개념 적용을 해봤습니다.
'프로그래밍 언어 > java' 카테고리의 다른 글
JAVA 더블클릭시, 도망가는 라벨 프로그램 (0) | 2021.02.02 |
---|---|
java 계산기 앱 (2) (0) | 2021.01.26 |
수강신청 프로그램 제작 - (3) (0) | 2021.01.13 |
java실습 - 계산기(1) (0) | 2021.01.12 |
java블로그를 시작하며... (0) | 2021.01.11 |