>Java >java지도 시간 >Java JAR 파일 내의 리소스에 어떻게 액세스합니까?

Java JAR 파일 내의 리소스에 어떻게 액세스합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-20 13:45:10877검색

How Do I Access Resources Within a Java JAR File?

Java JAR 파일의 리소스 경로 액세스

Java JAR 파일에 저장된 리소스로 작업할 때 리소스 경로를 얻는 방법은 다음과 같습니다. 도전적이다. 파일 시스템에 저장된 일반 파일과 달리 JAR 내의 리소스에는 반드시 직접 해당 파일이 있는 것은 아닙니다.

제공된 코드 조각은 이 문제를 보여줍니다.

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config/netclient.p").getFile());

이 코드는 파일 시스템에서 리소스에 실제 파일로 액세스할 수 없기 때문에 FileNotFoundException이 발생했습니다. JAR 파일이 개별 파일로 확장되지 않았을 수 있으며 클래스 로더 자체가 리소스에 파일 핸들을 제공하지 않을 수 있습니다.

대체 솔루션

콘텐츠를 얻으려면 JAR 파일 내의 리소스에 대한 대체 접근 방식은 다음을 사용하는 것입니다. classLoader.getResourceAsStream():

ClassLoader classLoader = getClass().getClassLoader();
PrintInputStream(classLoader.getResourceAsStream("config/netclient.p"));

이 코드는 파일 경로에 액세스하지 않고도 리소스의 내용을 직접 읽고 인쇄합니다. 리소스에 파일로 액세스해야 하는 경우 스트림을 임시 파일에 복사할 수 있습니다.

File tempFile = File.createTempFile("temp", null);
try (
    InputStream inputStream = classLoader.getResourceAsStream("config/netclient.p");
    OutputStream outputStream = new FileOutputStream(tempFile);
) {
    IOUtils.copy(inputStream, outputStream);
}

위 내용은 Java JAR 파일 내의 리소스에 어떻게 액세스합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.