Jak mogę utworzyć java.nio.file.Path
obiekt z String
obiektu w Javie 7?
To znaczy
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
gdzie ?
jest brakujący kod, który używa textPath
.
Jak mogę utworzyć java.nio.file.Path
obiekt z String
obiektu w Javie 7?
To znaczy
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
gdzie ?
jest brakujący kod, który używa textPath
.
Odpowiedzi:
Możesz po prostu użyć Paths
klasy:
Path path = Paths.get(textPath);
... zakładając oczywiście, że chcesz użyć domyślnego systemu plików.
Path.get()
niezależny od platformy? co Path.get("lib","p2")
będzie tak jak lib\p2
w Windowsie i lib/p2
Linuksie
Z javadocs .. http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html
Path p1 = Paths.get("/tmp/foo");
jest taki sam jak
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");
W systemie Windows tworzy plik C: \ joe \ logs \ foo.log (zakładając, że użytkownik domowy to C: \ joe)
W systemie Unix tworzy plik /u/joe/logs/foo.log (zakładając, że użytkownik domowy to / u / joe)
File.separarator
zamiast dbać o obecny system operacyjny. Np. "/tmp/foo"
JestFile.separator+"tmp"+File.separator+"foo"
Jeśli to możliwe, sugeruję utworzenie Path
bezpośrednio z elementów ścieżki:
Path path = Paths.get("C:", "dir1", "dir2", "dir3");
// if needed
String textPath = path.toString(); // "C:\\dir1\\dir2\\dir3"
Nawet jeśli pytanie dotyczy Javy 7, myślę, że wartość dodana polega na tym, że od Javy 11 istnieje metoda statyczna w Path
klasie, która pozwala to zrobić od razu:
Z całą ścieżką w jednym ciągu:
Path.of("/tmp/foo");
Ze ścieżką podzieloną na kilka ciągów:
Path.of("/tmp","foo");
Paths.get
.