Java7에서 문자열에서 경로 작성


280

Java 7 java.nio.file.PathString객체에서 객체를 만들려면 어떻게 해야합니까?

String textPath = "c:/dir1/dir2/dir3";
Path path = ?;

?를 사용하는 누락 된 코드는 어디에 있습니까 textPath?

답변:


454

Paths클래스를 사용할 수 있습니다 .

Path path = Paths.get(textPath);

... 기본 파일 시스템을 사용한다고 가정합니다.


상대 경로 및 전체 경로와 함께 작동하는 방법이 있습니까? 즉 프로젝트 또는 exe의 위치와 관련하여 경로를 제공합니까?
shinzou

@ kuhaku : 당신이하려는 일과 시도한 것에 대한 세부 사항을 가진 새로운 질문을해야한다고 생각합니다.
Jon Skeet

@ JonSkeet은 Path.get()플랫폼 독립적입니까? Windows와 Linux 에서와 Path.get("lib","p2") 같은 의미lib\p2lib/p2
Kasun Siyambalapitiya

1
@ KasunSiyambalapitiya : 예, 그런 식으로해야합니다.
Jon Skeet

1
@JonSkeet Paths.get ( "/ opt / path /"); "\ opt \ path \"로 반환됩니다. 솔루션을 제공해 주시겠습니까?
deadend

18

javadocs에서 .. http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html

Path p1 = Paths.get("/tmp/foo"); 

와 같다

Path p4 = FileSystems.getDefault().getPath("/tmp/foo");

Path p3 = Paths.get(URI.create("file:///Users/joe/FileTest.java"));

Path p5 = Paths.get(System.getProperty("user.home"),"logs", "foo.log"); 

Windows에서는 C : \ joe \ logs \ foo.log 파일을 작성합니다 (사용자 홈을 C : \ joe로 가정)
Unix에서 /u/joe/logs/foo.log 파일을 작성합니다 (사용자 홈을 / u / joe로 가정)


6
File.separarator현재 OS를 관리 하는 대신 사용 하는 것이 좋습니다 . 예를 들면 "/tmp/foo"이다File.separator+"tmp"+File.separator+"foo"
mat_boy

실제 파일을 생성하지는 않지만 Path 객체를 생성합니다. Files.createFile (logfilePath)를 사용하여 경로 객체를 사용하여 디스크에 실제 파일을 만들 수 있습니다.
Mr.Q

12

가능한 경우 Path경로 요소에서 직접 작성하는 것이 좋습니다 .

Path path = Paths.get("C:", "dir1", "dir2", "dir3");
// if needed
String textPath = path.toString(); // "C:\\dir1\\dir2\\dir3"

이 플랫폼은 독립적입니까?
Kasun Siyambalapitiya

7

Java 7에 관한 질문이 있더라도 Java 11부터는 Path이것을 즉시 수행 할 수 있는 정적 메소드가 클래스에 있음 을 아는 가치가 있다고 생각합니다 .

하나의 문자열에 모든 경로가있는 경우 :

Path.of("/tmp/foo");

경로를 여러 문자열로 분류하면 다음과 같습니다.

Path.of("/tmp","foo");


2
마침내 그들은이 방법을 제공했습니다!
mat_boy

@mat_boy 네,하지만 별거 아닙니다. 이 메소드는 이전에 호출 된 것을 제외하고 Java 7에 이미 존재했습니다 Paths.get.
DodgyCodeException
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.