ㅇ.ㅇ
[Java] FilenameUtils 사용하기 본문
반응형
Utils는 아는만큼 더 빠르고 간편하게 코드를 작성할 수 있는 것 같다. 하나하나 일일이 찾아보지는 못하니까 우연히 알게되면 나중에 사용할 수 있도록 정리를 해보려고 한다. 오늘의 주인공은 FilenameUtils이다.
개념
우선 FilenameUtils가 들어있는 Apache Commons IO는, 자바 언어를 위한 오픈소스 라이브러리로 다양한 기능을 제공한다. 이 라이브러리를 사용하면 파일 및 디렉토리 관리 작업을 더욱 쉽게 처리할 수 있으며, 그 때문에 다양한 자바 프로젝트에서 많이 사용되고 있다.
FilenameUtils 클래스는 파일 경로, 파일명, 확장자 등을 다루기 위한 여러 유틸리티 메서드를 제공한다. 특히 Windows에서는 \를, Unix 계열 시스템에서는 /를 경로 구분자로 사용하는 문제를 해결하여 개발자가 OS에 상관없이 파일 작업을 통일성 있게 수행할 수 있다.
주요 기능
1. 파일명과 확장자 추출 (파일 경로에서 확장자 검증 및 처리)
2. 파일 경로의 정규화
3. 운영체제 간 경로 구분자 통일 (Windows와 Unix 시스템에서 동일하게 동작하는 경로 처리)
Dependency 추가
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.x</version>
</dependency>
코드 예시
public static void main(String[] args) {
String filePath = "C:\\Users\\Test\\Downloads\\FilenameUtils-Test.txt";
System.out.println(FilenameUtils.getPath(filePath)); // Users\Test\Downloads\
System.out.println(FilenameUtils.getPathNoEndSeparator(filePath)); // Users\Test\Downloads
System.out.println(FilenameUtils.getFullPath(filePath)); // C:\Users\Test\Downloads\
System.out.println(FilenameUtils.getFullPathNoEndSeparator(filePath)); // C:\Users\Test\Downloads
System.out.println(FilenameUtils.removeExtension(filePath)); // C:\Users\Test\Downloads\FilenameUtils-Test
System.out.println(FilenameUtils.getName(filePath)); // FilenameUtils-Test.txt
System.out.println(FilenameUtils.getBaseName(filePath)); // FilenameUtils-Test
System.out.println(FilenameUtils.getExtension(filePath)); // txt
System.out.println(FilenameUtils.getPrefix(filePath)); // C:\
System.out.println(FilenameUtils.separatorsToUnix(filePath)); // C:/Users/Test/Downloads/FilenameUtils-Test.txt
}
정리
- FilenameUtils는 다양한 운영체제에서 파일 경로와 파일명을 쉽게 처리할 수 있는 유틸리티 클래스로, 복잡한 경로 처리 작업을 간편하게 수행할 수 있다.
- 파일 확장자 검증 로직을 통해 이미지나 비디오 파일인지 확인하여, 잘못된 형식의 파일이 업로드되지 않도록 할 수 있다.
- 이 유틸리티는 Windows와 Unix 계열의 경로 구분자 차이나 경로 끝에 구분자가 붙어 있는지 여부를 처리하기 위해 분기가 복잡해질 때 사용하기 좋다.
- 또한, 이미 경로 문자열 끝에 '/'가 붙어 있는 상태에서 중복으로 추가되거나 경로가 잘못 구성되는 문제를 교정하기에도 좋다.
반응형
'Today I Learned' 카테고리의 다른 글
[IDE] Intellij 와일드카드 import 방지 (1) | 2024.10.20 |
---|---|
[JUnit] 테스트 관련 어노테이션 정리 #1 (1) | 2024.10.13 |
[Java] Utility Class (0) | 2023.04.23 |
[Git] cherry-pick (0) | 2023.03.17 |
[Java] HashSet (0) | 2023.03.10 |