NoSuchFileException - Spring Boot 애플리케이션에 리소스를 추가할 때 이를 피하는 방법
3849 단어 javaspringtutorialprogramming
파일이 지정된 위치에 없으면 NoSuchFileException이 발생합니다. 발생하는 유사한 예외는 FileNotFoundException입니다.
1. 디렉토리에서 파일 불러오기
개발자가 리소스를 추가하는 데 사용하는 일반적인 접근 방식은 파일을 src/main/resources/디렉터리에 배치한 다음 해당 경로에서 파일을 읽는 것입니다.
모범 사례는 아니지만 이 접근 방식은 프로젝트가 로컬에서 실행되는 경우 작동합니다. 이는 프로젝트 디렉토리가 런타임 동안 현재 작업 디렉토리로 사용되기 때문입니다.
예를 들어 아래 코드를 사용하여 파일에서 사용자 데이터를 읽고 문자열에 값을 저장할 수 있습니다.
application.properties
filePath=src/main/resources/filename.txt
ReadUserDataFromFile.java
public class ReadUserDataFromFile {
@Value("${filePath}")
private String dataFilePath;
public String readDataFile() throws IOException {
String data = new String(Files.readAllBytes(Paths.get(filePath)));
return data;
}
}
파일이 src/main/resources/디렉토리에 있으면 성공적으로 읽은 것입니다.
이제 프로젝트가 JAR 파일로 패키지된 경우 파일을 읽으려고 하면 NoSuchFileException이 발생합니다. 이는 filename.txt가 JAR의 루트 폴더에 있고 파일 경로를 사용하여 액세스할 수 없기 때문에 발생합니다.
2. 리소스 객체 생성
NoSuchFileException에 대한 더 나은 접근과 해결책은 클래스에 org.springframework.core.io.Resource 객체를 생성하고 파일을 가리키도록 값을 설정하는 것입니다.
예시:
ReadUserDataFromFile.java
public class ReadUserDataFromFile {
@Value("classpath:filename.txt")
private Resource dataFile;
public String readDataFile() throws IOException {
String data = new String(dataFile.getInputStream().readAllBytes());
return data;
}
}
이 접근 방식을 사용하면 로컬 및 JAR 파일 모두에서 파일을 읽을 수 있습니다.
Reference
이 문제에 관하여(NoSuchFileException - Spring Boot 애플리케이션에 리소스를 추가할 때 이를 피하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dzifahodey/the-java-nosuchfileexception-how-to-avoid-it-when-adding-resources-to-a-spring-boot-application-2bd6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)