Recent Posts
Recent Comments
«   2024/12   »
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 31
관리 메뉴

ㅇ.ㅇ

[Java] FilenameUtils 사용하기 본문

Today I Learned

[Java] FilenameUtils 사용하기

yun_ 2024. 10. 13. 19:20
반응형

 

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