반응형
File 클래스
자바에서 파일 또는 디렉토리에 대한 파일 객체를 생성하여 다양한 메소드를 사용할 수 있게 해주는 클래스이다. 파일의 해당 경로, 절대 경로 등 여러 편리한 메소드를 제공하고 있다.
File 클래스 생성자
File 클래스는 파일, 디렉토리에 대한 객체를 생성하기 때문에 생성한 객체가 파일 일 수도 있고 디렉토리 일 수도 있다.
File 클래스 메소드
일반 메소드
File 객체의 상대 경로, 절대 경로 등을 제공하는 메소드이다.
File 생성/수정/삭제 메소드
파일이나 디렉토리 등을 생성, 수정, 삭제하는 메소드도 제공하고 있다.
File 체크 메소드
파일인지 디렉토리인지, 파일이 존재하는 지 등을 체코하는 메소드이다.
File 권한 메소드
파일의 권한을 설정, 변경할 수 있는 메소드이다.
경로와 관련된 File의 멤버 변수
경로와 관련하여 편의를 위해 File 클래스가 제공하는 멤버 변수이다.
사용 예제
디렉토리/파일 정보 확인
public class Main {
public static void main(String[] args) {
System.out.println("디렉토리 정보 확인");
System.out.println();
// current working directory : 현재작업경로
String curWorkingDir = System.getProperty("user.dir");
System.out.println("현재 작업 폴더: " + curWorkingDir);
System.out.println();
// 현재 작업 디렉토리의 파일 리스트 출력
// File 클래스: 파일(txt, doc, ...) 객체 또는 디렉토리(폴더) 객체
File curDir = new File(curWorkingDir);
File[] list = curDir.listFiles();
// listFiles(): 디렉토리 안에 있는 파일과 디렉토리들을 File[] 배열로 리턴
for(var f : list){
if(f.isDirectory()){
// isDirectory(): File 객체가 '디렉토리'이면 true 리턴
// isFile(): File 객체가 '파일'이면 true 리턴
System.out.print("DIR\t");
} else {
System.out.print("FILE\t");
}
System.out.print(f.getName() + "\t");
System.out.println(f.length());
}
System.out.println();
// 특정 디렉토리의 내용 출력, enhanced for 문 이용
File tempDir = new File("temp"); // cwd 기준 상대경로 /temp 의 File 객체 생성
for(var f : tempDir.listFiles()){
if (f.isFile()) {
System.out.print("FILE" + "\t");
} else {
System.out.print("DIR" + "\t");
}
System.out.print(f.getName() + "\t");
System.out.println(f.length());
}
System.out.println();
// 파일 하나에 대한 정보
String path = "dummy.txt";
File f = new File(path); // 새로운 File 객체 생성
// new File() 했다 하여, 실제 물리적으로 파일을 생성하는 것이 아니다!!
System.out.println(f.getName()); // 상대경로
System.out.println(f.getAbsolutePath()); // 절대경로
System.out.println(f.exists()); // 물리적으로 존재 여부
System.out.println("\n프로그램 종료");
} // end main()
} // end File11Main
폴더/파일 생성/이름 변경/삭제
public class Main {
public static final String TEST_DIRECTORY = "test";
public static final String TEMP_DIR = "temp";
public static final String TEST_FILE = "dummy.txt";
public static final String TEST_RENAME = "re_dummy.txt";
public static void main(String[] args) {
System.out.println("폴더/파일 생성, 이름변경, 삭제");
System.out.println();
String path = System.getProperty("user.dir")
+ File.separator
+ TEST_DIRECTORY;
System.out.println("절대경로: " + path);
System.out.println();
// 폴더 생성: mkdir()
File f = new File(path);
if(!f.exists()){ // 폴더가 존재하는지 확인
if(f.mkdir()){
System.out.println("폴더 생성 성공!");
} else {
System.out.println("폴더 생성 실패!");
}
} else {
System.out.println("폴더가 이미 존재합니다.");
}
System.out.println();
// 파일 생성 : createNewFile()
File f2 = new File(f, TEST_FILE); // File(디렉토리 File 객체, 파일명)
// 명심: new File() 했다고 물리적인 파일이 생긴건 아닙니다!!
System.out.println(f2.getAbsolutePath());
if(!f2.exists()){
try {
if(f2.createNewFile()){
System.out.println("파일 생성 성공");
} else {
System.out.println("파일 생성 실패!");
}
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("파일이 존재합니다");
}
System.out.println();
// 파일 이름 변경: renameTo()
// renameTo()를 이용해서 다른 폴더로 이동(move)를 할 수도 있다.
File f3 = new File(f, TEST_RENAME); // 변경될 이름
System.out.println(f3.getAbsolutePath());
if(f2.exists()){
if(f2.renameTo(f3)){
System.out.println("파일 이름 변경 성공!");
} else {
System.out.println("파일 이름 변경 실패!");
}
} else {
System.out.println("변경할 원본 파일이 없습니다.");
}
System.out.println();
// 파일 삭제: delete()
File f4 = new File(f, TEST_RENAME);
if(f4.exists()){
if(f4.delete()){
System.out.println("파일 삭제 성공!");
} else {
System.out.println("파일 삭제 실패!");
}
} else {
System.out.println("삭제할 파일이 없습니다.");
}
System.out.println("\n프로그램 종료");
} // end main()
} // end class
반응형
'Programming > Java' 카테고리의 다른 글
[자바/Java] Synchronized (0) | 2023.11.16 |
---|---|
[자바/Java] 시스템 속성(property) (0) | 2023.10.18 |
[자바/Java] 파일 I/O - PrintWriter + 인코딩 설정 (0) | 2023.10.18 |
[자바/Java] 파일 I/O - Object입출력 (0) | 2023.10.18 |
[자바/Java] 파일 I/O - Data 입출력 (0) | 2023.10.18 |