[Java 19-4 FileApp] File 클래스 : 파일(디렉토리 - 폴더) 관련 정보를 저장하기 위한 클래스

임승현·2022년 10월 19일

Java

목록 보기
102/126

🐧File 클래스 : 파일(디렉토리 - 폴더) 관련 정보를 저장하기 위한 클래스

package xyz.itwill.io;

import java.io.File;
import java.io.IOException;

public class FileApp {
	public static void main(String[] args) throws IOException {
		//File(String pathname) : 시스템(운영체제 - OS)의 파일경로를 전달받아 File 
        객체를 생성하는 생성자
		//→ 파일경로 : 시스템에 존재하는 파일 위치를 표현하는 방법 - 절대경로 표현방법,
        상대경로 표현방법
		//절대경로 표현방법 : 파일경로를 최상위 디렉토리를 기준으로 파일 위치를 표현하는 방법
		//상대경로 표현방법 : 현재 실행 프로그램의 작업디렉토리를 기준으로 파일 위치를 표현하는 방법
		//→ 이클립스에서는 프로젝트 폴더를 작업 디렉토리로 처리
		//Windows 운영체제에서는 폴더(드라이브)의 파일을 구분하기 위해 \ 기호 사용
		//→ Java에서는 \ 기호가 회피문자(Escape Character)를 표현하는 용도로 사용
		//→ \ 기호를 문자로 사용하기 위해 \\ 형태의 회피문자(Escape Character)를 표현
		File fileOne=new File("c:\\data");//mac은 ("/data")
		
		//File.exists() : File 객체에 저장된 파일 경로에 실제 파일(디렉토리)이 없는 
        경우 [false]를 반환 실제 파일(디렉토리)이 있는 경우 [true]를 반환하는 메소드
		if(fileOne.exists()) {
			System.out.println("c:\\data 폴더가 이미 존재합니다.");
		} else {
			//File.mkdir() : File 객체에 저장된 파일경로를 이용하여 디렉토리를 생성하는 메소드
			fileOne.mkdir();
			System.out.println("c:\\data 폴더를 생성하였습니다.");
		}
		System.out.println("========================================");
		
		//File fileTwo=new File("c:\\data\\xyz.txt");
		
		//Windows 운영체제를 제외한 나머지 운형체제에서는 폴더(드라이브)와 파일을 
        구분하기 위해 / 기호 사용
		//→ Java 에서는 파일 경로를 표현하기 위해 \ 대신 / 기호 사용 가능
		File fileTwo=new File("c:/data/xyz.txt");
		
		if(fileTwo.exists()) {
			System.out.println("c:\\data\\xyz.txt 파일이 이미 존재합니다.");
		} else {
			//File.createNewFile() : File 객체에 저장된 파일경로를 이용하여 파일을 
            생성하는 메소드
			//→ IOException 발생되므로 예외처리해야만 에러 미발생
			fileTwo.createNewFile();
			System.out.println("c:\\data\\xyz.txt 파일이 생성 하였습니다..");
		}
		System.out.println("========================================");
		//File fileThree=new File("c:/data/xyz.txt");

		//File(String parent, String child) : 시스템(운영체제 - OS)의 파일경로를 
        부모(디렉토리)와 
        자식(파일)으로 구분하여 전달받아 File 객체를 생성하는 생성자
		File fileThree=new File("c:/data","xyz.txt");
		
		if(fileThree.exists()) {
			//File.delete() : File 객체에 저장된 파일경로의 파일 을 삭제하는 메소드
			fileThree.delete();
			System.out.println("c:\\data\\xyz.txt 파일을 삭제 하였습니다.");
		} else {
			System.out.println("c:\\data\\xyz.txt 파일이 존재하지 않습니다.");
		}
		System.out.println("========================================");
		
		//파일경로를 상대경로 표현방법으로 전달하여 File 객체 생성
		//→ 현재 프로그램의 작섭디렉토리는 프로젝트 폴더로 설정
		//→ 상대경로 표현방법은 [..] 기호를 사용하여 상위 디렉토리(폴더)를 표현하며 
        [파일] 형식으로 
        폴더에 존재하는 파일 또는 하위 디렉토리(폴더)를 표현
		File fileFour=new File("src");
		
		if(fileFour.exists()) {
			//File.toString() : File 객체에 저장된 파일경로를 문자열로 반환하는 메소드
			//System.out.println("파일 경로 = "+fileFour.toString());//toString은 
            자동호출 되므로 생략 가능
			System.out.println("파일 경로 = "+fileFour);//toString은 자동호출 
            되므로 생략 가능
			
			//File.getAbsolutePath() : File 객체에 저장된 파일경로를 절대경로의 
            문자열로 반환하는 메소드
			System.out.println("파일 경로 = "+fileFour.getAbsolutePath());
		} else {
			System.out.println("작업디렉토리에 src 폴더가 없습니다.");
		}
		System.out.println("========================================");
		
		File fileFive=new File("c:/");
		
		//File.isDirectory() : File 객체에 저장된 파일경로가 디렉토리인 경우 
        [true]를 반환하는 메소드
		if(fileFive.isDirectory()) {
			//File.listFiles() : File 객체에 저장된 파일경로의 자식 파일(디렉토리) 
            목록을 File 객체 배열로 반환하는 메소드
			File[] subFiles=fileFive.listFiles();
			
			System.out.println(fileFive+" 폴더의 자식 목록 >> ");
			for(File file:subFiles) {
				if(file.isFile()) {
					System.out.println("파일 = "+file);
				} else {
					System.out.println("폴더 = "+file);
				}
			}
		}
		System.out.println("========================================");
	}
}

0개의 댓글