이 기사는 주로 웹 프로젝트에서 클래스 경로 아래에서 파일을 읽는 문제를 다음과 같이 연구합니다.
먼저 두 가지 범주로 나누고 웹 컨테이너로 분류합니다.
하나는 Tomcat 컨테이너 사용과 같은 일반적인 웹 프로젝트이며, 컨테이너가 시작될 때 압축 패키지가 폴더로 압축되는 것으로 특징 지어집니다. 프로젝트에 액세스 할 때 실제로 JAR 또는 전쟁 패키지가 아닌 폴더에 액세스하고 있습니다.
이것은 경로를 얻는 방법입니다 this.getClass().getResource("/")+fileName
스트림을 얻는 메소드 this.getClass().getResourceAsStream(failName);
import org.springframework.util.resourceutils; file file = resourceutils.getfile ( "classpath : test.txt");
또는
classPathResource classPathResource = new ClassPathResource ( "test.txt");
파일을 가져옵니다 : classPathResource .getFile();
파일 스트림 받기 : classPathResource .getInputStream();
두 번째 유형은 내장 된 웹 컨테이너이며, 컨테이너가 시작된 후에는 압축되지 않으며 프로젝트에 실제로 액세스 할 때 JAR 패키지 또는 전쟁 패키지가 사용됩니다.
이런 종류의 함정은 함정을 만날 가능성이 가장 높습니다. 가장 큰 함정은 Linux 환경이 아닌 로컬로 디버깅하고 완벽하게 실행되는 첫 번째 방식으로 읽히는 것입니다.
먼저, 경로를 얻는 방법을 사용하여 this.getClass().getResource("/")+fileName 사용하여 플로우 메소드를 얻으려면 this.getClass().getResourceAsStream(failName);
로컬로 달리면 절벽을 찾을 수 있고 경로를 인쇄 할 수 있습니다. 예, Eclipse Working Directory 및 Project Directory이지만 대상 디렉토리입니다.
이제 온라인으로가는 이유를 분석하겠습니다. GG입니다. 매우 간단합니다. 온라인 임베디드 프로젝트의 경우 항아리 파일 만 올려 놓을 것입니다. 항아리의 경로는 얻을 수 없다는 것을 이해합니다. 항아리는 닫힌 것입니다. 폴더와 달리 C : /home/xx.jar/file.txt 일 수는 없습니다
항아리에서 파일을 읽으면 스트림을 사용하여 파일이 아닌 읽기 만 읽을 수 있습니다. 파일에는 경로가 포함되어야합니다. 나는 방금 항아리의 길을 철자했다
Jar에서 파일을 읽는 방법 :
classPathResource classPathResource = new ClassPathResource ( "test.txt");
파일 스트림 받기 : classPathResource .getInputStream();
요약
위는 웹 프로젝트의 클래스 경로 아래에서 파일을 읽는 것에 대한이 기사의 전체 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!