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

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

WBOY
WBOY앞으로
2023-06-03 16:38:182571검색

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으로 문의하시기 바랍니다. 삭제