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)블로그를 올렸어야하는데 문제해결이 아직덜되어 틈틈히 복습한 파일처리 개념 적용을 해봤습니다.

+ Recent posts