나는 이와 비슷한 주제를 찾을 수 있었지만 지금까지이 질문과 정확히 일치하는 것은 없습니다. 사용자가 응용 프로그램에 표시 할 이미지를 추가 할 수있는 JavaFX 응용 프로그램을 만들고 있습니다. 이러한 이미지는 텍스트 파일 데이터베이스에 파일 경로 문자열로 저장됩니다. .jar 파일은 읽기 전용이므로 이미지를 프로젝트에 직접 추가 할 수 없으므로 이미지가 모두 들어있는 프로젝트 바깥에있는 에셋 폴더를 만들었습니다.Java 내 프로젝트 위의 디렉토리에있는 파일에 액세스하는 방법
그래서 폴더 구조는 : 이제
-> Parent Folder that the .jar file sits in
- Project Folder or .jar file
- src
* classes.java
- assets Folder
* image.jpg
* image2.png
, 내 imagePath
프로젝트 폴더 안에있는 경우 Image image = new Image(getClass().getResourceAsStream(imagePath));
이 일 것이라는 점을 알고있다. 그러나 폴더 상대 경로 (외부)가 필요합니다.
내 첫 번째 (그리고 지금은 가장 중요한) 질문은 응용 프로그램의 폴더에서 빠져 나오는이 상대 경로를 어떻게 표시해야하는지입니다.
둘째로, 좋은 사례입니까? JavaFX 응용 프로그램을 만들고 응용 프로그램과 함께 저장할 새 이미지를 추가하려면 더 나은 방법이 있습니까?
디렉토리에 대한 상대 경로로 파일 참조를 사용했습니다.이 문제는 디렉토리에있는 작업 디렉토리 변경 될 수 있습니다. 문제의 끝을 초래할 것입니다 – MadProgrammer
_project directory_는 전혀 상관이 없습니다 - 여러분이 신경 쓰는 것은 _at_ runtime _ 프로그램의 _current 작업 디렉토리 _입니다. 프로그램이 실행될 때 이것은 일반적으로'../'일 것이지만 MadProgrammer가 말한 것처럼 현재 디렉토리는 프로그램 실행 중에 바뀔 수 있습니다. –
전반적인 더 나은 선택은 잘 알려진 위치 (사용자의'home' 디렉토리 아래)에 파일을 배치하는 것입니다. 특히 OS에 따라 다릅니다. 읽기 전용 자산을위한 더 나은 솔루션은 Jar 파일에 저장하는 것입니다. – MadProgrammer