package com.coffee.common;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class GenerateData {
// 윈도우 폴더 구분자는 \인데 특수 문자이므로 반드시 \\로 표기해야 합니다(역슬래쉬 두개가 자바에서는 역슬래쉬 하나이다).
private static final String IMAGE_DIR = "c:\\boot\\images"; // 이미지가 있는 폴더 경로
public static List<String> getImageFileNames() {
//특정 폴더 내에 들어 있는 모든 이미지 파일을 문자열 List 형식으로 반환합니다.
File folder = new File(IMAGE_DIR);
List<String> imageFiles = new ArrayList<String>();
if(folder.exists() == false && folder.isFile()){
System.out.println("해당 폴더가 존재하지 않습니다" + IMAGE_DIR);
return imageFiles;
}
//확장자가 다음 항목인 파일들만 추출
String[] imageExtensions = {".jpg",".jpeg","png"};
File[] fileList = folder.listFiles();
for(File file : fileList){
if (file.isFile() && Arrays.stream(imageExtensions)
.anyMatch(ext -> file.getName().toLowerCase().endsWith(ext))) {
imageFiles.add(file.getName());
}
}
return imageFiles;
}
}
📌 GenerateData
클래스의 핵심 기능
1️⃣ 특정 폴더(c:\boot\images
)에서 이미지 파일 목록을 가져옴
2️⃣ 확장자가 .jpg
, .jpeg
, .png
인 파일만 필터링
3️⃣ 파일 이름들을 List<String>
형태로 반환
1️⃣ java.io.File
(파일 및 폴더 조작)
🔹 File
클래스는 파일 및 디렉터리(폴더)를 관리하는 클래스
🔹 파일이 존재하는지, 디렉터리인지, 파일 목록을 가져오는 등의 기능을 제공
📌 사용된 메서드 정리
메서드 | 설명 |
---|---|
new File(String path) |
파일 또는 폴더를 나타내는 객체 생성 |
file.exists() |
파일 또는 폴더가 존재하는지 확인 (true / false ) |
file.isFile() |
해당 File 객체가 파일인지 확인 (true / false ) |
file.listFiles() |
해당 폴더에 있는 모든 파일 및 하위 폴더 목록을 File[] 배열로 반환 |
file.getName() |
파일 이름을 문자열로 반환 |
📌 예제
File folder = new File("c:\\boot\\images");
if (folder.exists()) {
System.out.println("폴더가 존재합니다.");
File[] files = folder.listFiles(); // 폴더 안의 파일 리스트 가져오기
for (File file : files) {
System.out.println("파일 이름: " + file.getName());
}
} else {
System.out.println("폴더가 존재하지 않습니다.");
}
2️⃣ java.util.ArrayList
(리스트 저장)
🔹 ArrayList
는 가변 크기의 리스트(배열)를 제공하는 클래스
🔹 여러 개의 값을 동적으로 저장하고 관리할 때 사용
📌 사용된 메서드 정리
| 메서드 | 설명 |
|--------|------|
| new ArrayList<>()
| 빈 리스트 생성 |
| list.add(값)
| 리스트에 요소 추가 |
| list.get(인덱스)
| 특정 위치(인덱스)의 요소 가져오기 |
| list.size()
| 리스트의 크기(요소 개수) 반환 |
📌 예제
List<String> imageFiles = new ArrayList<>();
imageFiles.add("dog.jpg");
imageFiles.add("cat.png");
System.out.println(imageFiles.get(0)); // 출력: dog.jpg
System.out.println(imageFiles.size()); // 출력: 2
3️⃣ java.util.Arrays
(배열 관련 유틸리티)
🔹 Arrays
클래스는 배열 관련 기능을 제공하는 유틸리티 클래스
🔹 배열을 리스트로 변환, 정렬, 특정 조건 검사 등의 기능을 지원
📌 사용된 메서드 정리
메서드 | 설명 |
---|---|
Arrays.stream(배열).anyMatch(조건) |
배열에서 특정 조건을 만족하는 요소가 있는지 확인 |
📌 예제 (anyMatch()
활용)
String[] extensions = {".jpg", ".jpeg", ".png"};
boolean isImage = Arrays.stream(extensions)
.anyMatch(ext -> "photo.jpg".toLowerCase().endsWith(ext));
System.out.println(isImage); // 출력: true (".jpg"가 확장자 목록에 포함되어 있음)
📌 이 코드가 하는 일
photo.jpg
의 확장자가".jpg"
,".jpeg"
,".png"
중 하나인지 검사true
또는false
반환
4️⃣ java.util.List
(리스트 인터페이스)
🔹 List
는 순서가 있는 데이터 저장 구조 (인터페이스)
🔹 ArrayList
, LinkedList
같은 클래스들이 List
를 구현
📌 사용된 메서드 정리
메서드 | 설명 |
---|---|
List.of(값, 값, 값) |
불변 리스트 생성 (수정 불가능) |
list.add(값) |
리스트에 요소 추가 |
list.get(인덱스) |
리스트에서 특정 요소 가져오기 |
📌 예제
List<String> names = List.of("Alice", "Bob", "Charlie");
System.out.println(names.get(1)); // 출력: Bob
📌 GenerateData
코드에서 사용된 라이브러리 정리표
패키지 | 클래스 | 설명 |
---|---|---|
java.io |
File |
파일 및 폴더 조작 (존재 여부 확인, 파일 목록 가져오기) |
java.util |
ArrayList |
가변 크기의 리스트 (파일명 저장용) |
java.util |
Arrays |
배열 관련 기능 제공 (anyMatch() 로 확장자 검사) |
java.util |
List |
리스트 인터페이스 (데이터 저장) |
'웹 개발' 카테고리의 다른 글
JPA 연관관계 매핑 정리 (0) | 2025.02.25 |
---|---|
React - Router의 동작 흐름 (0) | 2025.02.24 |
SpringBoot 개발환경 설정하기. (1) | 2025.02.17 |
배열 정렬 하기 - toSorted(), Sort() (1) | 2025.02.15 |
JavaScript 객체 및 데이터 변환 정리 (0) | 2025.02.15 |