Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- github
- 애널리틱스4
- EntityManager
- analytics4
- TIOBE
- JPA
- Jenkins
- git pat
- 명령어
- ci/cd
- spring
- MariaDB
- docker
- jetbrain
- pat발급
- 르세라핌
- git branch 삭제
- Python
- visual studio code
- 티스토리챌린지
- java
- gtihub
- IntelliJ
- 자동배포
- 오블완
- ANTIFRAGILE
- UNION ALL
- db종류
- JPQL
Archives
- Today
- Total
hanker
Java - (Window/Linux) 디렉터리 목록 가져오기 본문
반응형
특정 디렉터리 안에 위치한 디렉터리 리스트를 정렬해서 가져오는 코드를 알아보자.
Java 1.8을 사용했고, 1.8 이전 버전 사용 예도 알아보자.
우선 특정 디렉터리(D:\\hanker)를 살펴보자.
디렉터리 7개와 파일 7개 있다. 이 중에서 디렉터리만 추출해보자.
public static void main(String[] args) throws Exception {
// 특정 디렉터리 경로 설정
String directoryPath = "D:\\hanker";
File directory = new File(directoryPath);
// 경로가 디렉터리인지 확인
if (!directory.isDirectory()) {
System.out.println("Not a directory: " + directoryPath);
return;
}
// 디렉터리 안에 있는 디렉터리 목록 가져오기
File[] directories = directory.listFiles(File::isDirectory);
if (directories == null || directories.length == 0) {
System.out.println("No directories found.");
return;
}
// 마지막 수정 시간으로 디렉터리 목록 정렬
Arrays.sort(directories, Comparator.comparingLong(File::lastModified).reversed());
// 최신 디렉터리명 반환
for(File file : directories){
System.out.println(file.getName());
}
}
위 코드를 실행시켜보면
이렇게 디렉터리만 추출되는게 확인된다. (리눅스 서버에서도 동일하게 사용하면 된다.)
여기까지가 1.8 버전에서 사용 예이고, 1.8 이전 버전에서 사용하는 법을 알아보자.
Comparator.comparingLong(), reversed() 메서드는 1.8에서 추가된 메서드
메서드 참조 대신 인터페이스의 익명 구현체를 사용하여 실행시켜야 한다.
public static void main(String[] args) throws Exception {
// 특정 디렉터리 경로 설정
String directoryPath = "D:\\hanker";
File directory = new File(directoryPath);
// 경로가 디렉터리인지 확인
if (!directory.isDirectory()) {
System.out.println("Not a directory: " + directoryPath);
return;
}
// 디렉터리 안에 있는 디렉터리 목록 가져오기
File[] directories = directory.listFiles(new java.io.FileFilter() {
@Override
public boolean accept(File file) {
return file.isDirectory();
}
});
if (directories == null || directories.length == 0) {
System.out.println("No directories found.");
return;
}
// 마지막 수정 시간으로 디렉터리 목록 정렬
Arrays.sort(directories, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
return Long.compare(f2.lastModified(), f1.lastModified());
}
});
// 최신 디렉터리명 반환
for(File file : directories){
System.out.println(file.getName());
}
}
위 코드가 1.8 버전 이전에서도 사용가능한 코드이다.
결과는
동일하게 나온다.
끝.
반응형
'JAVA' 카테고리의 다른 글
JAVA - 멀티 쓰레드 연산처리 (AtomicInteger) (0) | 2024.10.12 |
---|---|
JAVA - 멀티쓰레드(Multi Thread) 반복문 병렬처리 방법 (1) | 2024.10.12 |
JAVA - Lambda (java 8) (0) | 2024.09.15 |
JAVA - stream (1) | 2024.09.13 |
JAVA - HttpUrlConnection, HttpsUrlConnection (httpMethod GET, POST) (1) (0) | 2024.09.11 |