Как я могу создать 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.