> Java > java지도 시간 > springboot가 파일을 jar 패키지로 읽은 후 파일에 액세스할 수 없는 문제를 해결하는 방법

springboot가 파일을 jar 패키지로 읽은 후 파일에 액세스할 수 없는 문제를 해결하는 방법

WBOY
풀어 주다: 2023-06-03 16:38:18
앞으로
2655명이 탐색했습니다.

Springboot는 파일을 읽지만 jar 패키지로 패키징한 후에는 접근할 수 없습니다.

최근 개발에서는 springboot가 파일을 jar 패키지로 패키징한 후 파일을 읽을 수 없는 상황이 있습니다. 파일의 가상 경로가 유효하지 않으며 스트림을 통해서만 액세스할 수 있습니다.

파일은 resources

public void test() {
  List<String> names = new ArrayList<>();
  InputStreamReader read = null;
  try {
   ClassPathResource resource = new ClassPathResource("name.txt");
 
   InputStream inputStream = resource.getInputStream();
   read = new InputStreamReader(inputStream, "utf-8");
   BufferedReader bufferedReader = new BufferedReader(read);
   String txt = null;
   while ((txt = bufferedReader.readLine()) != null) {
    if (StringUtils.isNotBlank(txt)) {
     names.add(txt);
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   if (read != null) {
    try {
     read.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }
로그인 후 복사

springboot jar 패키지의 백그라운드에서는 static 폴더에 접근할 수 없습니다

1. ResourceUtils

보통 스프링 부트 프로젝트를 작성할 때 백그라운드에서 클래스 경로 아래에 있는 파일을 사용하는 경우가 있습니다. , 우리는 이렇습니다. Written by

File file = ResourceUtils.getFile("classpath:static/image/image");
로그인 후 복사

이 경우에는 문제가 없었을 것입니다. 그러나 jar 패키지를 실행한 후에는 파일을 찾을 수 없습니다.

Resource 아래의 파일은 jar 파일에 존재합니다. 디스크에는 실제 경로가 없습니다. 실제로는 jar 내부의 경로입니다. 따라서 ResourceUtils.getFile 또는 this.getClass().getResource("") 메소드를 통해 파일을 올바르게 얻을 수 없습니다.

이런 상황에서는. 프로젝트 문서가 프로젝트 외부에 배치되는 경우가 있는데 실수로 이러한 것들을 삭제하기 쉽습니다.

2.ClassPathResource

 ClassPathResource cpr = new ClassPathResource("static/image/image/kpg");
 InputStream in = cpr.getInputStream();
로그인 후 복사

3.ResourceLoader

 public class ResourceRenderer {
 public static InputStream resourceLoader(String fileFullPath) throws IOException {
        ResourceLoader resourceLoader = new DefaultResourceLoader();
        return resourceLoader.getResource(fileFullPath).getInputStream();
    }
}
로그인 후 복사

Usage

InputStream in = ResourceRenderer.resourceLoader("classpath:static/image/image");
로그인 후 복사

이는 jar 패키지에서 접근할 수 없는 경로 문제를 완벽하게 해결합니다.

위 내용은 springboot가 파일을 jar 패키지로 읽은 후 파일에 액세스할 수 없는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿