
1. 파일 입출력
1-1. File 클래스
File 클래스 파일 또는 폴더에 대한 정보를 제공하는 클래스이다.
File 클래스의 객체는 정보를 조회하고자 하는 파일이나 폴더의 경로에 대한 문자열을 생성자 파라미터로 전달하는 형태로 만들 수 있다.
이 때 파라미터로 전달되는 경로가 실제로 존재하지 않더라도 File 객체의 생성이 가능하다.
File file = new File("경로");
File file = new File("C:/photo/food.jpg");
File file = new File("C:/photo", "food.jpg");
1-2. 경로 설정하기
운영체제간의 호환성 유지를 위한 '/'의 사용
-> C:/Users/KITCOOP/Desktop/ZoomIt
-> 경로 문자열을 설정할 때 윈도우기반에서는 역슬래시()를 사용하지만, 이 경우, 이스케이프 문자를 사용하여 '\'의 형식으로 사용해야 하고, 가급적 다른 운영체제와의 호환성을 위해서 슬래시(/)를 사용하는 것이 좋다.
절대경로
-> 작업 디렉토리와 관계없이 절대적인 위치를 의미하는 경로
-> 윈도우 예시: C:Windows/System32/drivers/etc/hosts
-> 리눅스 예시: /etc/httpd/conf/httpd.cof
상대경로
-> 작업 디렉토리를 기준으로 상대적인 위치를 의미하는 경로
-> 같은 디렉토리: 파일명, ./파일명
ex) data.txt, ./data.txt // 동일한 경로
-> 상위 디렉토리: ../파일명
ex) ../data.txt
-> 하위 디렉토리: 디렉토리명/파일명, ./디렉토리명/파일명
ex) dir/data.txt, ./dir/data.txt
-> 윈도우: ../driver/etc/hosts
-> 리눅스: ../conf/httpd.conf
public static void main(String[] args) {
// 이클립스에서 상대경로를 사용할 경우,
// 현재 프로젝트가 기준이 된다.
// 절대경로나 or 상대경로를 생성자 파라미터로 전달
File f1 = new File("src/file/Main01.java");
// 전달된 경로가 파일인지 검사
// -> 존재하지 않는 파일로 검사할 경우, 무조건 false
boolean is_file = f1.isFile();
System.out.println("isFile : " + is_file);
-> isFile : true
// 전달된 경로가 디렉토리인지 검사
// -> 존재하지 않는 디렉토리로 검사할 경우 무조건 false
boolean is_dir = f1.isDirectory();
System.out.println("isDirectory = " + is_dir);
-> isDirectory = false
// 전달된 경로가 숨김 형태인지 검사
// -> 존재하지 않는 파일로 검사할 경우 무조건 false
boolean is_hidden = f1.isHidden();
System.out.println("isHidden = " + is_hidden);
-> isHidden = false
// 절대경로 값을 추출
String abs = f1.getAbsolutePath();
System.out.println("절대경로 = " + abs);
-> 절대경로 = D:\gb_phw_1218\java\workspace\day14\src\file\Main01.java
// 생성자에 전달된 파일이나 디렉토리가 물리적으로 존재하는지를 검사
boolean is_exist = f1.exists();
System.out.println("존재여부 : " + is_exist);
-> 존재여부 : true
// 디렉토리 정보 객체 생성
File f2 = new File("a/b/c/target");
System.out.println("isFile : " + f2.isFile());
System.out.println("isDirectory : " + f2.isDirectory());
System.out.println("isHidden : " + f2.isHidden());
System.out.println("절대경로 : " + f2.getAbsolutePath());
System.out.println("존재여부 : " + f2.exists());
->
isFile : false
isDirectory : false
isHidden : false
절대경로 : D:\gb_phw_1218\java\workspace\day14\a\b\c\target
존재여부 : false
// 경로에 따른 디렉토리 생성
// 새로고침
f2.mkdirs();
System.out.println("---------------");
// 마지막 "/" 이후 단어를 리턴
System.out.println(f1.getName());
System.out.println(f2.getName());
-> Main01.java
-> target
// 처음부터 마지막 "/" 직전까지 리턴
System.out.println(f1.getParent());
System.out.println(f2.getParent());
-> src\file
-> a\b\c
System.out.println("----------------");
// 삭제 시도 -> 성공시 true, 실패시 false
boolean del_ok = f2.delete();
System.out.println("삭제성공여부 : " + del_ok);
}