BACK/JAVA

[JAVA] 자바로 파일 관리하기(File 클래스)

연듀 2022. 10. 23. 11:21

 

자바의 File 클래스는 파일과 폴더를 관리하는 클래스이다. 

파일 객체를 생성하는 시점에서는 실제 파일의 존재 유무는 문제가 되지 않는다.

다만 해당 경로에 실제 파일이 존재하지 않을 때 File 객체로 파일을 읽으려고 하면 FileNotFoundException이 발생한다. 

 

 

파일 객체 생성하기

File tempDir = new File("D:/temp"); // 폴더 객체 생성
if(!tempDir.exists()) // 폴더가 없을 때 
    tempDir.mkdir(); // 실제 폴더 생성
System.out.println(tempDir.exists()); // true

// 파일 객체 생성
File newFile = new File("D:/temp/newFile.txt");
if(!newFile.exists())
    newFile.createNewFile(); // temp 폴더가 없을 때 예외 발생
System.out.println(newFile.exists()); // true
System.out.println();

 

 

파일 경로 표시하기

// 파일 구분자
File newFile2 = new File("D:\\temp\\newFile.txt"); // 윈도우
File newFile3 = new File("D:/temp/newFile.txt"); // 윈도우 + 맥
File newFile4 = new File("D:"+File.separator+"temp"+File.separator+"newFile.txt"); // File 클래스의 정적 필드

System.out.println(newFile2.exists()); // true
System.out.println(newFile3.exists()); // true
System.out.println(newFile4.exists()); // true
System.out.println();

 

 

파일의 절대 경로와 상대 경로

// 절대 경로
File newFile5 = new File("D:/abc/newFile.txt");
File newFile6 = new File("D:/abc/bcd/newFile.txt");
System.out.println(newFile5.getAbsolutePath());
System.out.println(newFile6.getAbsolutePath());
D:\abc\newFile.txt
D:\abc\bcd\newFile.txt

 

// 상대 경로
System.out.println(System.getProperty("user.dir")); // 현재 작업 폴더의 위치
File newFile7 = new File("newFile1.txt");
File newFile8 = new File("bcd/newFile2.txt");
System.out.println(newFile7.getAbsolutePath());
System.out.println(newFile8.getAbsolutePath());
현재위치
현재위치\newFile.txt
현재위치\bcd\newFile2.txt

 

 

파일 클래스의 주요 메서드

 

File tempDir = new File("C:/temp");
if (!tempDir.exists())
    tempDir.mkdir();
File file = new File("C:/windows");
System.out.println("절대 경로: " + file.getAbsolutePath()); // 절대 경로: D:\windows
System.out.println("폴더: " + file.isDirectory()); // 폴더: true
System.out.println("파일: " + file.isFile()); // 파일: false
System.out.println("파일/폴더명 " + file.getName()); // 파일/폴더명 windows
System.out.println("부모 폴더: " + file.getParent()); // 부모 폴더: C:\
File newFile1 = new File("C:/temp/abc");
System.out.println(newFile1.mkdir()); // true
File newFile2 = new File("C:/temp/bcd/cde");
System.out.println(newFile2.mkdir()); // false
System.out.println(newFile2.mkdirs()); // true

 

mkdir()은 이미 존재하는 폴더 아래에만 폴더를 생성한다.

mkdirs()은 존재하지 않는 경로상의 모든 폴더를 한꺼번에 생성한다.