Intelli-J Idea IDE를 사용하고 Java EE 웹 프로젝트에서 작업하고 있습니다. words.txt
파일을 읽으려고합니다. 코드는 명령 행에서 제대로 작동하지만 glassfish 서버에 코드를 배포하면 "FileNotFoundException"이 표시됩니다.Java EE 웹 프로젝트에서 파일 읽기
파일은 파일 내용을 읽을 코드
"SRC/분석/pWords.txt"에 있습니다 StackOverflow의 검색 후
Scanner scan = new Scanner(new File("src/Analyser/pWords.txt"));
을, 나는이 파일을 추가 할 필요가 있다는 것을 발견 resources 디렉토리. 불행히도 리소스를 만들 수 없습니다.
InputStream inputStream = new FileInputStream("src/Analyser/pWords.txt");
및
InputStream inputStream = MyClass.class.getClassLoader().getResourceAsStream("src/Analyser/pWords.txt");
InputStream inputStream = MyClass.class.getClassLoader().getResourceAsStream("pWords.txt");
그러나 결과는 null
또는 error
이다 : 나는 src
폴더에 패키지 main
과 자원을 만들 때 패키지가 나는 등의 다른 방법을 시도, main.resources
된다.
내 프로젝트에서 src/Analyser/
디렉토리의 파일을 읽을 수있는 방법이 있습니까? 그것은 Java EE 웹 프로젝트입니다.
는 UPDATE : 프로젝트 구조에서
> 유물>WEB-INF
폴더, 나는 pWords.txt
파일을 업로드했습니다. 이제 BufferedReader가 비어 있지 않고 디버깅 중에 bufferedReader
에 데이터가 있음을 알 수 있습니다. 그러나 데이터를 문자열 변수에 복사하면 변수는 null로 남습니다. 나는 그것에 대해 아주 혼란 스럽다.
코드 :
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream stream = classLoader.getResourceAsStream("pWords.txt");
BufferedReader bf = new BufferedReader(new InputStreamReader(stream));
String t = "";
try {
while((t = bf.readLine()) != null) { // in debugging, (cb) contains the char data as char elements.
t += bf.readLine(); // but t = null
}
} catch(IOException x) {
}
당신은 자바 EE의 파일 시스템을 사용할 수 없습니다. 클래스 경로 자원에 대한 입력 스트림을 열어야합니다. 출처가 아니어야합니다./resources는 classpath에 있어야합니다.패키지 루트에 상대적인 읽기. – duffymo
@duffymo 클래스 패스에 어떻게 자원을 추가 할 수 있습니까? 두 번째로, 저는 자원 디렉토리를 만들 수 없습니다. – Nix
만들 수 없습니다? 물론 당신은 할 수. 표준 Maven 디렉토리 구조를 사용하고 IntelliJ 이슈를 사용하여 Java EE 패키지를 빌드하는 것이 좋습니다. src/main/resources 내용은 자동으로 CLASSPATH에 저장됩니다. – duffymo