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 중국어 웹사이트의 기타 관련 기사를 참조하세요!