Як я можу створити 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
.