File의 getAbsolutePath 메소드에서 현재 작업 디렉토리에 대한 혼동
파일의 getAbsolutePath는 상대 경로 또는 파일 이름 만 파일 생성자에 제공되는 경우 현재 작업 디렉토리를 접두사로 지정하여 절대 경로를 확인하는 경향이 있습니다.
현재 작업 디렉토리의 정의는 Java 프로그램을 실행하는 디렉토리입니다. 내 예에서 내 자바 프로그램은D:\my-app\src\App.java
내가 할 때 System.out.println(System.getProperty("user.dir"));
그런 다음 이상적으로 인쇄해야합니다. D:\my-app\src
하지만 실제로 인쇄 중입니다. D:\my-app
왜 그래야만하지?
답변
IntelliJ에서 응용 프로그램을 시작할 때 작업 디렉토리는 "실행 / 디버그 구성"대화 상자의 "작업 디렉토리"에 설정된 내용에 따라 설정됩니다 .
여기에서 작업 디렉토리를 D:\my-app\src
. 또 다른 옵션은 경로 변수 를 사용하는 것 입니다. 사용 가능한 변수 목록은 많은 항목에 따라 달라질 수 있습니다. 대화 상자를 열고 사용 가능한 항목을 확인하십시오. 내가 보는 한 가지 옵션 $FileDir$
은 소스 코드 파일의 디렉토리가 될 것이라고 생각합니다.
해결책을 찾은 것 같습니다. Intellij는 src 폴더를 소스 폴더로 암시 적으로 설정하여 실제로 문제를 일으켰습니다. Intellij 내의 모듈 설정으로 이동하여 찾았습니다. 명령 프롬프트에서 동일한 작업을 실행하면 올바른 작업 디렉토리 D:\my-app\src\
가 선택됩니다.