[ File 클래스 ]
- 파일 내용이 아닌, 파일 자체(껍데기)를 다룸
- NIO2만으로는 파일 조작이 어려워 병행해서 사용하면 효율적
- NIO2와 서로 변환할 수 있음
파일 클래스를 사용하면 파일 스트림을 열기 전에 실제 파일에 대한 정보를 확인할 수 있고, 또 파일 자체를 삭제하거나 이름을 변경하는 등의 작업을 수행할 수 있습니다.
데이터 입출력에 대한 기본 개념은 아래 링크글을 참조하시면 됩니다.
2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_io / nio / nio2 [1/3]
[ 생성자 ]
- new File(File parent, String child) : 상위 주소와 파일 이름(또는 디렉토리)
- new File(String pathname) : 상위 주소
- new File(String parent, String child) : 상위 주소와 파일 이름(또는 디렉토리)
- new File(URI uri) : 파일의 uri 주소
boolean | exists() | - 파일이 실제 존재하는지 판단 |
boolean | isDirectory() | - 디렉토리인지 판단 |
boolean | isFile() | - 파일인지 판단 |
boolean | canRead() | - 파일이 읽기 가능한지 판단 |
boolean | canWrite() | - 파일이 쓰기 가능한지 판단 |
boolean | canExecute() | - 파일이 실행 가능한지 판단 |
boolean | isHidden() | - 파일이 숨김파일인지 판단 |
int | length() | - 파일의 길이(byte) 반환 |
package study.first;
import java.io.File;
public class Main {
public static void main(String[] args) {
// 파일의 주소 및 파일명을 가진 file 객체 생성
// input.txt : "Hello World..!!"
File file = new File("C:\\JAVA\\FirstStudy\\FisrtStudy\\input.txt");
System.out.println(file.exists()); // true
System.out.println(file.isDirectory()); // false
System.out.println(file.isFile()); // true
System.out.println(file.canRead()); // true
System.out.println(file.canWrite()); // true
System.out.println(file.canExecute()); // true
System.out.println(file.isHidden()); // false
System.out.println(file.length()); // 15
}
}
boolean | renameTo(File dest) | - 경로가 같으면 이름 변경, 경로가 다르면 이름 바뀌면서 해당 경로로 이동됨 |
boolean | delete() | - 파일 삭제 |
boolean | mkdir() | - 생성자에 넣은 경로에 맞게 폴더 생성 |
boolean | createNewFile() | - 생성자에 넣은 경로 및 파일명에 맞게 파일 생성 |
package study.first;
import java.io.File;
public class Main {
public static void main(String[] args) {
try {
File dir = new File("C:\\JAVA\\FirstStudy\\FisrtStudy\\newforder");
dir.mkdir(); // 폴더 생성
File file = new File(dir, "input2.txt");
file.createNewFile(); // 파일 생성
File file2 = new File("input3.txt");
file.renameTo(file2); // 경로가 다르므로 파일 이름 변경 및 이동 수행
} catch (Exception e) {
System.out.println("파일 및 폴더 생성에 실패했습니다.");
}
}
}
boolean | setReadable(treu/false) | - 읽기 권한 설정 |
boolean | setWritable(true/false) | - 쓰기 권한 설정 |
boolean | setExecutable(true/false) | - 실행 권한 설정 |
package study.first;
import java.io.File;
public class Main {
public static void main(String[] args) {
try {
File file = new File("input3.txt");
file.setReadable(false);
file.setWritable(false);
file.setExecutable(false);
} catch (Exception e) {
System.out.println("파일 및 폴더 생성에 실패했습니다.");
}
}
}
String | getPath() | - 파일 또는 디렉토리의 상대 경로 추출 (생성자로 준 경로 반환) |
String | getAbsolutePath() | - 파일 또는 디렉토리의 절대 경로 추출 (생성자 관계없이 절대 경로 반환) |
File | getAbsoluteFile() | - 절대 경로를 가지는 File 객체 생성 |
String | getParent() | - 현재 파일의 상위 경로 추출 (생성자에서 제공했을 경우) |
File | getParentFile() | - 현재 파일의 상위 경로를 가진 File 객체 생성 (생성자에서 제공했을 경우) |
package study.first;
import java.io.File;
public class Main {
public static void main(String[] args) {
try {
File file = new File("input3.txt");
System.out.println(file.getPath()); // "input3.txt"
System.out.println(file.getAbsolutePath()); // 전체 주소 출력
System.out.println(file.getAbsoluteFile()); // 전체 주소 출력(File 객체 생성)
System.out.println(file.getParent()); // 생성자에 Parent주소 없으므로 null
System.out.println(file.getParentFile()); // 생성자에 Parent주소 없으므로 null
} catch (Exception e) {
System.out.println("파일 및 폴더 생성에 실패했습니다.");
}
}
}
String[] | list() | - 현재 경로의 파일 또는 디렉토리 목록 추출 |
File[] | listFiles() | - 현재 경로의 파일 또는 디렉토리를 가지는 File 타입 배열 추출 |
File 인스턴스가 파일이 아닌 경로를 가지고 있을 때 해당 경로에 존재하는 파일 및 폴더의 정보를 배열에 담아줍니다. 파일 정보까지 가지고 있을 때는 예외가 발생됩니다.
package study.first;
import java.io.File;
public class Main {
public static void main(String[] args) {
try {
File file = new File("C:\\JAVA\\FirstStudy\\FisrtStudy");
String[] arr = file.list();
for(String a : arr)
System.out.println(a); // 폴더 내 모든 파일과 디렉토리 정보
} catch (Exception e) {
System.out.println("파일 및 폴더 생성에 실패했습니다.");
}
}
}
예외 발생을 피하고 싶으면 isDiretory() 메소드를 이용해 조건문으로 써주면 됩니다.
package study.first;
import java.io.File;
public class Main {
public static void main(String[] args) {
File file = new File("C:\\JAVA\\FirstStudy\\FisrtStudy\\input.txt");
// "디렉토리 정보라면"
if (file.isDirectory()) {
String[] arr = file.list();
for (String a : arr)
System.out.println(a); // 폴더 내 모든 파일과 디렉토리 정보
} else {
System.out.println("File 객체가 폴더가 아닙니다.");
}
}
}
728x90
반응형
'Back-end > JAVA & Spring' 카테고리의 다른 글
[Java] 보조 스트림 : 문자 변환 보조 스트림 : OutputStreamWriter (0) | 2021.05.11 |
---|---|
[Java] java.io.FileOutputStream 주요 메소드 (0) | 2021.05.11 |
[Java] JsonObject , JsonArray 다루기 (JsonParser로 파싱하기) (0) | 2021.05.11 |
[Java] JSONObject 사용하기 (0) | 2021.05.11 |
[Java] 자바 instanceof 사용방법 (0) | 2021.05.11 |
댓글