Creative Saplings

Java – 리소스 폴더에서 파일 읽기

1월 9, 2021
No Comments
작성자 : mkyong | 최종 업데이트 : 2020 년 9 월 4 일
조회 : 1,368,612 | +4,610 pv / w

Java에서는 또는 getResource : resources 폴더 또는 클래스 경로의 루트에서 파일 또는 여러 파일을 읽습니다.

p>

getResourceAsStream 메소드는 InputStream를 반환합니다.

getResource 메소드는 URL를 반환하고 일반적으로 File로 변환합니다. JAR 파일에서 작동하지 않습니다.

자원 폴더의 파일

1.1 src/main/resources의 파일을 검토하고 나중에 파일에 액세스하고 파일 내용을 인쇄합니다.

src / main / resources / database.properties
src / main / resources / json / file1.json
src / main / resources / json / file2.json
src / main / resources / json / sub / subfile1.json

1.2 기본적으로 Maven, Gradle과 같은 도구를 빌드합니다. , 또는 일반적인 Java 실행은 src/main/resources의 모든 파일을 target/classes 또는 build/classes. 따라서 src/main/resources에서 파일을 읽으려고 할 때 프로젝트 클래스 경로의 루트에서 파일을 읽습니다.

1.3 다음은 JAR 파일 구조입니다. 일반적으로 resources 폴더의 파일은 클래스 경로의 루트로 복사됩니다.

Terminal

자원 폴더에서 파일을 가져옵니다.

2.1 아래 예는 getResourceAsStream 및 메서드를 사용하여 resources 폴더에서 json/file1.json 파일을 읽고 파일 내용을 인쇄합니다.

참고

  • getResource 메소드는 JAR 파일에서 작동하지 않습니다.
  • getResourceAsStream 메소드는 모든 곳에서 작동합니다.
FileResourcesUtils.java

출력

터미널

2.2 이제 프로젝트를 JAR 파일로 압축하고 실행합니다. 이번에는 getResource가 실패하고 NoSuchFileException 또는 InvalidPathException를 반환합니다. 리소스 URL을 통해 JAR 파일에있는 파일을 읽을 수 없습니다.

Linux (Ubuntu)에서 JAR 파일을 실행하면 NoSuchFileException가 발생합니다.

터미널

Windows에서 JAR 파일을 실행하면 InvalidPathException가 발생합니다.

Terminal

PS This 예제에서는 Maven 플러그인 maven-jar-plugin를 사용하여 JAR 파일을 만듭니다.

pom.xml

리소스 폴더에서 파일 가져 오기 – 단위 테스트

3.1 단위 테스트를 위해 src/test/resources 폴더에 테스트 리소스를 저장합니다. 일반적으로 테스트 리소스의 파일은 target/test-classes 폴더로 복사됩니다.

src / test / resources / json / file1.json
src / test / resources / database.properties

3.2 작동합니다 src/main/resources에서 파일을 읽는 것과 같은 방식입니다. 동일한 getResourceAsStream 및 getResource 방법을 사용하여 src/test/resources에서 파일을 읽습니다.

FileResourcesTest.java

출력

터미널

리소스 폴더에서 모든 파일을 가져옵니다. (비 JAR 환경)

정확한 파일 이름을 모르고 리소스 폴더의 하위 폴더 파일을 포함한 모든 파일을 읽으려면 NIO Files.walk 파일에 쉽게 액세스하고 읽을 수 있습니다.

4.1 아래 예에서는 Files.walk를 사용하여 :

FileResourcesUtils.java

출력

터미널

4.2 그러나 표준 Files.walk는 JAR 파일의 파일에 직접 액세스 할 수 없습니다. JAR 환경에서 예제 4.1을 실행하면 FileSystemNotFoundException가 발생합니다.

터미널

리소스 폴더에서 모든 파일을 가져옵니다. (JAR 버전)

5.1이 예는 FileSystems 및 URI를 통해 JAR 파일 내의 폴더를 Files.walk하는 방법을 보여줍니다. jar:file:xxx.jar.

아이디어 :

  • 파일은 , 모든 파일 이름 가져 오기, getPathsFromResourceJAR() 참조
  • 모든 파일 이름 반복, 예제 2.1과 같이 각 파일 액세스 및 인쇄, getFileFromResourceAsStream().
FileResourcesUtils.java

출력

터미널

소스 코드 다운로드

$ git clone https://github.com/mkyong/core-java

$ cd java-io

  • Files.walk JavaDoc
  • CodeSource JavaDoc
  • RFC 2396 – URI 구문 및 형식
  • Maven – JAR 파일 생성
  • Zip 파일 시스템 공급자
  • Java Files.walk 예제
  • Java – 실행중인 JAR 파일의 경로 가져 오기

mkyong

Mkyong.com의 창립자로서 Java와 오픈 소스를 좋아합니다. Twitter에서 팔로우하세요. 내 튜토리얼이 마음에 들면 이러한 자선 단체에 기부 해보세요.

Articles
Previous Post

Dell 노트북에서 스크린 샷을 찍는 방법 (이미지 포함)

Next Post

PMC (한국어)

답글 남기기 답글 취소하기

최신 글

  • 2020 년 세계 최고의 사진 학교
  • 주권 시민이 반정부 철학을 도로로 가져옴
  • 치장 벽토 수리 비용 가이드
  • Muckrakers (한국어)
  • 정밀 종양학

보관함

  • 2021년 2월
  • 2021년 1월
  • 2020년 12월
  • 2020년 11월
  • 2020년 10월
  • 2020년 9월
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
Proudly powered by WordPress | Theme: Fmi by Forrss.