프로그래밍 방식으로 리소스 디렉터리 경로를 가져오는 방법
디렉토리 레이아웃은 다음과 같습니다.
- src
- 주된
- 자바
- 자원.
- sql(데이터베이스에 추가)
- 스프링(구성)
- 웹 앱
Servlet Context Listener 클래스 내에서 SQL 디렉토리의 파일에 액세스하여 목록을 표시합니다.기본적으로 문제가 되는 것은 경로입니다.왜냐하면 디렉토리 아래에 파일이 표시되는 것은 다음과 같기 때문입니다.
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
어쩌면 내가 그...ServletContextEvent
경로를 구축하기 위한 개체resources/sql
public void contextInitialized(ServletContextEvent event) {
event.getServletContext(); //(getRealPath etc.)
}
상대적이고 하드코드되지 않은 방식으로 경로를 설정할 수 있는 무언가가 존재합니까?뭐랄까new File("classpath:sql")
(가능한 경우 스프링) 또는 servlet Context를 사용하여 다음을 가리키려면 어떻게 해야 합니까?resources/sql
?
의 내용을 추측하고 있습니다.src/main/resources/
카피처WEB-INF/classes/
빌드 시 .war 안에 있습니다.이 경우(클래스명과 로드되는 경로의 실제 값을 대체)를 실행할 수 있습니다.
URL sqlScriptUrl = MyServletContextListener.class
.getClassLoader().getResource("sql/script.sql");
마지막으로 이렇게 했습니다.
private File getFileFromURL() {
URL url = this.getClass().getClassLoader().getResource("/sql");
File file = null;
try {
file = new File(url.toURI());
} catch (URISyntaxException e) {
file = new File(url.getPath());
} finally {
return file;
}
}
...
File folder = getFileFromURL();
File[] listOfFiles = folder.listFiles();
import org.springframework.core.io.ClassPathResource;
...
File folder = new ClassPathResource("sql").getFile();
File[] listOfFiles = folder.listFiles();
이로 인해 도입 옵션이 제한된다는 점에 주의해 주십시오.ClassPathResource.getFile()
컨테이너가 전쟁 파일을 폭발(압축 해제)한 경우에만 작동합니다.
com.google.common.io 를 사용해 주세요.자원 클래스예:
URL url = Resources.getResource("file name")
그 후 .getContent() , .getFile() , .getPath() 등의 메서드를 사용합니다.
언급URL : https://stackoverflow.com/questions/19414453/how-to-get-resources-directory-path-programmatically
'programing' 카테고리의 다른 글
개별 행의 MYSQL sum() (0) | 2023.01.03 |
---|---|
테이블의 일부 특정 항목에서 다른 테이블의 열 값을 사용하여 열을 업데이트합니다. (0) | 2023.01.03 |
Twig 템플릿에서 break 또는 continue in for loop을 사용하려면 어떻게 해야 하나요? (0) | 2023.01.03 |
내장 MariaDB C/C++ API (0) | 2023.01.03 |
MariaDB 쿼리 열을 JSON으로 변환 (0) | 2023.01.03 |