[Java] File 클래스 기본
Java.io.File 클래스는 자바에서 파일시스템의 파일이나 디렉터리(폴더)를 추상화 한 클래스이다.
즉, File 클래스를 통하여 파일시스템의 파일이나 디렉터리를 조작(삭제, 파일명변경 등)을 할 수 있다.
File 클래스를 통해 할 수 있는 작업이 많은 만큼 제공되는 메소드들도 다양하다. File 클래스의 생성과 케이스별 사용법에 대해 정리한다.
File 객체 생성
아래 경로처럼 Test.txt 파일을 생성하고 이 파일의 File 객체를 생성한다.
D:\MyWork\Test.txt
public class File_Practice {
public static void main(String[] args) {
String parentPath = "D:/MyWork";
String filePath = "D:/MyWork/Test.txt";
String fileNm = "Test.txt";
// File(File parent, String child) 생성자
File file1 = new File(parentPath, fileNm);
// File(String pathname) 생성자
File file2 = new File(filePath);
// File(String parent, String child) 생성자
File parent = new File(parentPath);
File file3 = new File(parent, fileNm);
if(file1.exists() && file2.exists() && file3.exists()){
System.out.println("모두 생성 완료!");
}
}
}
file.exist() 는 파일의 존재여부를 검사하는 메소드를 이처럼 File 클래스에서는 파일에 관한 여러 편리한 메소드를 제공하도 있다.
아래부터는 이런 메소드들을 활용하여 어떤 작업을 할 수 있는지 케이스별로 살펴본다.
File 객체 활용
아래 소스코드를 실행하기 위한 디폴트 폴더/파일 구성은 아래와 같습니다.
D:/MyWork (Dir)
D:/MyWork/Test.txt (File)
D:/MyWork/MyDirectory (Dir)
1. 파일 또는 디렉터리의 존재유무 확인 및 기본정보 출력
public class Check_Default_Info {
public static void main(String[] args) {
String rootPath = "D:/MyWork";
File rootDir = new File(rootPath);
// 파일명
System.out.println(rootDir.getName()); // MyWork
// 절대경로
System.out.println(rootDir.getAbsolutePath()); // D:\MyWork
// 경로
System.out.println(rootDir.getPath()); // D:\MyWork
// 존재여부
System.out.println(rootDir.exists()); // true
// 읽기/쓰기/실행 가능여부
if (rootDir.exists()) { // 존재하면
System.out.println(rootDir.canRead()); // true
System.out.println(rootDir.canWrite()); // true
System.out.println(rootDir.canExecute()); // true
}
}
}
2. 디렉터리의 내부 내용물(파일, 디렉터리) 출력
디렉터리의 경우 listFiles() 메소드로 내부 파일(디렉터리 포함) 목록을 가져올 수 있으며 for문으로 순회하며 작업을 할 수 있다.
public class Check_DirectoryContents_Info {
public static void main(String[] args) {
String rootPath = "D:/MyWork";
File rootDir = new File(rootPath);
if(rootDir.isDirectory()){ // 디렉터리면
File[] contents = rootDir.listFiles(); // 파일목록을 가져온다.
for(File file : contents){
System.out.println("파일명 : " + file.getName());
System.out.println("절대경로 : " + file.getAbsolutePath());
System.out.println("파일여부 : " + file.isFile());
System.out.println("------------------------------");
}
}
}
}
// 출력결과
파일명 : MyDirectory
절대경로 : D:\MyWork\MyDirectory
파일여부 : false
------------------------------
파일명 : Test.txt
절대경로 : D:\MyWork\Test.txt
파일여부 : true
------------------------------
3. 디렉터리 및 파일 생성
mkdir() 메소드를 사용하여 디렉터리를 생성한다. mkdirs() 메소드도 제공되며 차이점은 mkdirs()는 필요한 상위의 디렉터리가 없으면 같이 만든다는 것에 있다.
createNewFile() 메소드는 신규 파일을 생성할 수 있다.
length() 메소드는 파일의 용량을 체크할 수 있으며 신규 파일의 경우 빈 파일이므로 0이 출력된다.
public class Mkdir {
public static void main(String[] args) {
String rootPath = "D:/MyWork";
File rootDir = new File(rootPath);
// 디렉터리 생성시작
File newDir = new File(rootDir, "newDir"); // 생성할 디렉터리
System.out.println("신규 디렉터리 생성여부 : " + newDir.exists()); // false
boolean isMake = newDir.mkdir(); // 디렉터리 생성
System.out.println("신규 디렉터리 생성결과 : " + isMake); // true
System.out.println("신규 디렉터리 생성여부1 : " + newDir.exists()); // true
System.out.println("신규 디렉터리 생성여부2 : " + newDir.isDirectory()); // true
// 파일 생성시작
File newFile = new File(newDir, "newFile");
System.out.println("신규 파일 생성여부 : " + newFile.exists()); // false
try {
newFile.createNewFile(); // 파일생성
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("신규 파일 생성여부 : " + newFile.exists()); // true
System.out.println("신규 파일 용량 : " + newFile.length()); // 0
System.out.println("신규 파일 경로 : " + newFile.getAbsolutePath()); // D:\MyWork\newDir\newFile
}
}
4. 파일명 변경 및 삭제
createNewFile()로 새로운 파일 생성 후 delete() 메소드로 삭제한다.
public class Rename_Delete {
public static void main(String[] args) throws IOException {
String rootPath = "D:/MyWork";
File rootDir = new File(rootPath);
File file = new File(rootDir, "tmpFile");
file.createNewFile();
System.out.println("삭제전 파일 존재여부 : " + file.exists()); // true
// 파일삭제 시작
boolean isDel = file.delete();
System.out.println("파일 삭제 여부 : " + isDel); // true
System.out.println("삭제후 파일 존재여부 : " + file.exists()); // false
}
}
'개발 > JAVA' 카테고리의 다른 글
[Java] 파일 생성 및 쓰기 읽기(BufferedReader, BufferedWriter) (0) | 2020.12.15 |
---|---|
[Java] StringTokenizer 기본 및 사용법 (0) | 2020.12.15 |
Java String reverse (문자열 뒤집기) (2) | 2020.12.13 |
StringBuffer(StringBuilder) 클래스 기본 및 사용 (0) | 2020.12.13 |
String 메소드 살펴보기 (0) | 2020.12.12 |