Java로 현재 작업 디렉토리를 얻는 방법? = System.getProperty(“user.dir”);

java를 사용하여 현재 작업 디렉토리에 액세스하고 싶습니다.

내 코드 :

 String current = new java.io.File( "." ).getCanonicalPath();
        System.out.println("Current dir:"+current);
 String currentDir = System.getProperty("user.dir");
        System.out.println("Current dir using System:" +currentDir);

산출:

Current dir: C:\WINDOWS\system32
Current dir using System: C:\WINDOWS\system32

C 드라이브가 현재 디렉토리가 아니기 때문에 출력이 올바르지 않습니다.

현재 디렉토리를 얻는 방법?



답변

public class JavaApplication {
  public static void main(String[] args) {
       System.out.println("Working Directory = " + System.getProperty("user.dir"));
  }
}

응용 프로그램이 초기화 된 곳에서 완전한 절대 경로를 인쇄합니다 .


로부터 문서 :

java.io패키지는 현재 사용자 디렉토리를 사용하여 상대 경로 이름을 확인합니다. 현재 디렉토리는 시스템 특성, 즉 user.dirJVM이 호출 된 디렉토리로 표시됩니다.


답변

참조 : http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html

java.nio.file.Pathand를 사용하여 java.nio.file.PathsJava가 현재 경로라고 생각하는 것을 보여주기 위해 다음을 수행 할 수 있습니다. 이것은 7 이상이며 NIO를 사용합니다.

Path currentRelativePath = Paths.get("");
String s = currentRelativePath.toAbsolutePath().toString();
System.out.println("Current relative path is: " + s);

이것은 Current relative path is: /Users/george/NetBeansProjects/Tutorials내 경우에는 내가 수업을 시작한 곳임을 출력 합니다. 절대 경로를 구성하고 있음을 나타 내기 위해 선행 구분 기호를 사용하지 않고 상대적인 방식으로 경로를 구성하면이 상대 경로가 시작점으로 사용됩니다.


답변

다음은 Java 7 이상에서 작동합니다 ( 설명서 는 여기 참조 ).

import java.nio.file.Paths;

Paths.get(".").toAbsolutePath().normalize().toString();

답변

현재 작업 디렉토리의 경로가 표시됩니다.

Path path = FileSystems.getDefault().getPath(".");

그리고 이것은 작업 디렉토리에 “Foo.txt”라는 파일의 경로를 제공합니다 :

Path path = FileSystems.getDefault().getPath("Foo.txt");

편집 :
현재 디렉토리의 절대 경로를 얻으려면

Path path = FileSystems.getDefault().getPath(".").toAbsolutePath();

* 업데이트 *
현재 작업 디렉토리를 얻으려면 :

Path path = FileSystems.getDefault().getPath("").toAbsolutePath();

답변

이것은 나를위한 해결책입니다

File currentDir = new File("");

답변

나는이 솔루션을 다른 사람들보다 낫고 더 휴대하기 쉬운 주석에서 찾았습니다.

String cwd = new File("").getAbsolutePath();

또는

String cwd = Paths.get("").toAbsolutePath();

답변

c : \ windows \ system32 가 현재 디렉토리가 아니라고 생각하는 이유는 무엇입니까 ? 이 user.dir특성은 명시 적으로 “사용자의 현재 작업 디렉토리”입니다.

다시 말하면, 명령 행에서 Java를 시작하지 않으면 c : \ windows \ system32는 아마도 CWD 일 것입니다. 즉, 프로그램을 시작하기 위해 두 번 클릭하는 경우 CWD는 두 번 클릭하는 디렉토리가 아닐 수 있습니다.

편집 : 이것은 오래된 창 및 / 또는 Java 버전에만 해당되는 것으로 보입니다.