Java를 이용하여 운영체제 위에 있는 폴더와 파일에 접근하는 법을 알아보겠습니다. (아주 간단한 것들만 있으니 참고 부탁드립니다.)
더 많은 정보는 API 문서에 많습니다.
https://docs.oracle.com/javase/7/docs/api/
File
사용자 인터페이스와 운영 체제는 시스템에 종속된 경로 이름 문자열을 사용하여 파일과 디렉터리의 이름을 지정합니다. 이 클래스는 계층적 경로 이름에 대한 추상적이고 시스템 독립적인 보기를 제공합니다. 추상 경로 이름에는 두 가지 구성 요소가 있습니다.
Disk 드라이브 지정자, UNIX 루트 디렉터리의 경우 "/", 마이크로소프트 윈도우즈 UNC 경로 이름의 경우 "\\"와 같은 시스템 종속 접두사 문자열(선택 사항) 및 0개 이상의 문자열 이름 순서입니다.
추상 경로 이름의 이름은 디렉터리 이름이거나 마이크로소프트 윈도우즈 UNC 경로 이름의 경우 호스트 이름일 수 있습니다. 추상 경로 이름의 각 후속 이름은 디렉토리를 나타내며, 성은 디렉토리 또는 파일을 나타낼 수 있습니다. 빈 추상 경로 이름에 접두사와 빈 이름 시퀀스가 없습니다.
이러한 설명이 있는데 쉽지 않네요. 예시를 보면서 사용법을 익혀볼까요?
예제
import java.io.File;
import java.io.IOException;
public class TestFile {
public static void main(String[] args) {
String path = "/Users/Desktop/coding/Java/15day-File-inst" + File.separator + "directory";
File dir = new File(path);
boolean result = dir.exists();
System.out.println("디렉토리 존재:" + result);
// 디렉토리 생성
boolean mkResult = dir.mkdirs();
System.out.println("디렉토리 생성 여부:" + mkResult);
File file = new File(path + File.separator + "file1");
System.out.println("파일 존재:" + file.exists());
if (file.exists() == false) {
try {
boolean createResult = file.createNewFile();
System.out.println("파일생성:" + createResult);
} catch (IOException e) {
// 예외 발생 경로 및 메세지를 출력
e.printStackTrace();
}
}
}
}
자신이 지정하고 싶은 파일의 경로를 설정해서 File 클래스랑 연동시킵니다.
운영체제의 종류에 따라 파일 경로 설정을 다르게 해야합니다. 그래서 헷갈리지 않게 File.separator를 사용해서 폴더 별로 분리해서 사용하면 됩니다.
exist()
파일이 존재하는지 안하는지 확인 하는 것은 exist() 메소드를 사용하면됩니다.
mkdirs()
디렉토리를 만드는 메소드입니다.
createNewFile()
File을 만드는 메소드입니다.
이번에는 폴더내의 파일의 이름을 부르는 것을 해보겠습니다.
import java.io.File;
public class TestFile4 {
public static void main(String[] args) {
String path = "/Users/Desktop/coding/Java/15day-File-inst" + File.separator + "15day";
// 위 디렉토리가 가지고 있는 디렉토리를 제외한 파일들의 이름을 모두 출력하시오
// File class의 listFiles() : File []
// isFile() 을 이용해서 파일의 이름(getName())을 출력한다
File dir = new File(path);
File fa[] = dir.listFiles();
for (int i = 0; i < fa.length; i++) {
if (fa[i].isFile()) {
System.out.println(fa[i].getName());
}
}
}
}
폴더내에 있는 파일들만 불러왔습니다.
배열을 File들의 배열로 묶어서 만들고, 파일인 것들만 불러내는 함수입니다.
소감
java로 운영체제 내에 있는 폴더와 파일을 다룰 수 있다는 것이 흥미로웠습니다. 프로그램을 만들 때, 파일을 다루는 자동화 프로그램을 만들면 어떨까 라는 생각을 했습니다. 당연히 이 함수들을 사용하는 파일을 다루는 프로그램이 있겠죠? 꼭 만들어 보고 싶습니다.
'코딩 개발 > Java' 카테고리의 다른 글
Java - Thread, Runnable (4) | 2023.04.23 |
---|---|
Java - ObjectInputStream & ObjectOutputStream (2) | 2023.04.20 |
Java - Exception handling (feat. try, catch, throw, throws) (2) | 2023.04.14 |
Java - Map (0) | 2023.04.12 |
Java - Set, ArrayList (0) | 2023.04.11 |