2016-07-22 6 views
3

파일 경로가 myPlugin/impl/src/main/resources/myPlugin/impl/src/main/java/com/company/myPlugin/impl/users.txtusers.txt 파일이 있습니다. 파일 경로가 myPlugin/impl/src/main/java/com/company/myPlugin/impl/UserManager 인 Java 클래스에서이 파일에 액세스하려고합니다. 작업 디렉토리가 변경되기 때문에 경로를 하드 코딩하고 싶지 않습니다.Java에서 상대 경로로 파일을 읽는 방법은 무엇입니까?

String path = System.getProperty("user.dir") + .....path to users.txt; 

이 가진 문제는 내가 로컬로 플러그인을 실행하는 경우에만 작동한다는 것입니다 : 나는 시도했다. 다른 시스템이나 서버에 배포 할 때 작업 디렉토리에 모든 파일이 포함되지는 않습니다. 실제로 필요한 것은 myPlugin의 상대 경로 만 사용하여 파일을 여는 방법입니다. 나는 또한 시도했다

URL path = getClass.getResource(""); 

그리고 나서 나머지 경로를 추가했지만 이것도 작동하지 않았다. 현재 작업 디렉토리에 의존하지 않는 상대 경로 만 사용할 수도 있습니까? 서버에서 플러그인을 실행하면 작업 디렉토리에 소스 코드 또는 디렉토리 구조가 포함되지 않습니다.

+0

를 통해 액세스 할 수 있어야하고, 당신은 웹 응용 프로그램입니다 여부를 확인할 수 있습니까? –

+0

maven을 사용하고 웹 애플리케이션이 아닙니다. – SVN600

답변

1

파일 위치는 myPlugin/impl/src/main/resources/users.txt의 두 부분으로 구성됩니다. 첫 번째 것은 빌드 시스템 (Maven)이 리소스를 찾는 위치입니다. 두 번째는 실제 리소스입니다.

모두 myPlugin/impl/src/main/resources 아래 (파일과 디렉토리 모두)는 클래스 경로에 복사됩니다.

귀하의 질문에 대답하기 위해, 파일은 응용 프로그램을 구축 할 받는다는을 사용

getClass().getClassLoader().getResource("users.txt"); 
+0

작은 관찰 : 클래스 경로의 파일 위치가 getClass(). getResource()가 호출 된 곳과 동일한 패키지에 있다고 가정합니다. 내가 그 질문을 본다면 그렇지 않습니다. 'getClass(). getClassLoader(). getResource()'가 더 나은 조언 일 수 있습니다. – Gimby

+0

이것은 이론 상으로는 효과가있는 것처럼 보입니다. 생성되는 경로는 "/ target/class"디렉토리의 올바른 경로이지만 프로그램에서 파일을 찾을 수 없습니다. – SVN600

+0

@Gimby 리소스가 기본 패키지에 있다고 가정하면 수정이 필수적입니다. 고맙습니다. – Arkadiy

관련 문제