728x90
반응형
특정 경로의 파일, 특정된 파일명으로 파일 찾아오는 방법
특정 경로의 파일을 가져와서 읽어야하는 플젝을 한 적이 있어 그 방법을 공유하고자 작성함
내 경우 폴더 경로를 찾는데 좀 복잡한 조건이 있었음
/Users 폴더 안에 하위로 이름이 다 다른 폴더들이 있고, 그 폴더가 몇개가 될지는 모르지만 최하위 폴더로 Downloads/sample 폴더가 존재하는 폴더를 찾아서 그 안의 sample1.txt, sample2.txt만 찾아서 읽어야 했음
내가 읽어야 하는 정보는 아래의 사진과 같이 /Users 폴더안에 있는 /Downloads/sample/sample1.txt, sample2.txt 이 두 파일이였음
해당 경로의 파일 찾아서 읽기
나는 Downloads/sample을 찾을 때 재귀함수를 통해서 계속해서 파일이 있는지 확인하는 방법으로 찾았음
디렉토리가 존재하는지 확인 후 그 경로에서 sample1.txt와 sample2.txt를 찾아서 파일을 읽고 필요한 정보를 sampleList에 담아 보냄
예제
public List<SampleDto> getCertificateFile() throws Exception {
List<SampleDto> sampleList = new ArrayList<>();
String strDirPath = "/Users";
File usersDir = new File(strDirPath);
File[] userDirs = usersDir.listFiles();
if (userDirs != null) {
for (File userDir : userDirs) {
if (userDir.isDirectory()) {
File sampleDir = new File(userDir, "Downloads/smple");
if (sampleDir.exists() && sampleDir.isDirectory()) {
List<SampleDto> sampleInDir = listFilesWithExtensions(sampleDir);
sampleList.addAll(sampleInDir);
}
}
}
}
return sampleList;
}
private List<SampleDto> listFilesWithExtensions(File path) {
List<SampleDto> sampleList = new ArrayList<>();
File[] fList = path.listFiles();
if (fList == null) {
return sampleList;
}
for (File file : fList) {
if (file.isFile()) {
String fileName = file.getName();
if (fileName.equals("sample1.txt") || fileName.equals("sample2.txt")) {
System.out.println("파일명: " + fileName + ", 파일 경로: " + file.getAbsolutePath());
// 파일 읽고 처리하는 부분
// 필요한 정보를 읽고 sampleList에 담기
}
} else if (file.isDirectory()) {
List<SampleDto> sampleInDir = listFilesWithExtensions(file);
sampleList.addAll(sampleInDir);
}
}
return sampleList;
}
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] NULL 처리 방법 (0) | 2023.09.12 |
---|---|
[Java] LocalDateTime 값을 yyyyMMdd 문자열로 포맷팅 (0) | 2023.09.05 |
[Java] X509Certificate 클래스 설명 및 예제 (0) | 2023.08.01 |
[Java] MultipartFile과 File 차이점 및 변환 (0) | 2023.07.31 |
[Java] 파일을 Base64로 인코딩, 디코딩하는 방법 (0) | 2023.07.28 |