Как я могу создать java.nio.file.Path
объект из String
объекта в Java 7?
Т.е.
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
где ?
недостающий код, который использует textPath
.
Как я могу создать java.nio.file.Path
объект из String
объекта в Java 7?
Т.е.
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
где ?
недостающий код, который использует textPath
.
Ответы:
Вы можете просто использовать Paths
класс:
Path path = Paths.get(textPath);
... конечно, если вы хотите использовать файловую систему по умолчанию.
Path.get()
независимым от платформы? это означает, что Path.get("lib","p2")
будет как lib\p2
в Windows, так и lib/p2
в Linux
От 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)
File.separarator
вместо того, чтобы заботиться о текущей ОС. Например "/tmp/foo"
,File.separator+"tmp"+File.separator+"foo"
Если возможно, я бы предложил создать Path
непосредственно из элементов пути:
Path path = Paths.get("C:", "dir1", "dir2", "dir3");
// if needed
String textPath = path.toString(); // "C:\\dir1\\dir2\\dir3"
Даже когда вопрос касается Java 7, я думаю, что полезно добавить, что начиная с Java 11 и далее, есть статический метод в Path
классе который позволяет сделать это сразу:
Со всем путем в одной строке:
Path.of("/tmp/foo");
Путь разбит на несколько строк:
Path.of("/tmp","foo");
Paths.get
.