Como posso criar um java.nio.file.Path
objeto a partir de um String
objeto no Java 7?
Ou seja,
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
Onde ?
está o código ausente que usa textPath
.
Como posso criar um java.nio.file.Path
objeto a partir de um String
objeto no Java 7?
Ou seja,
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
Onde ?
está o código ausente que usa textPath
.
Respostas:
Você pode apenas usar a Paths
classe:
Path path = Paths.get(textPath);
... supondo que você queira usar o sistema de arquivos padrão, é claro.
Path.get()
independente de plataforma? o que significa que Path.get("lib","p2")
será como lib\p2
no Windows e lib/p2
no Linux
Dos javadocs .. http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html
Path p1 = Paths.get("/tmp/foo");
é o mesmo que
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");
No Windows, cria o arquivo C: \ joe \ logs \ foo.log (assumindo a origem do usuário como C: \ joe)
No Unix, cria o arquivo /u/joe/logs/foo.log (assumindo a origem do usuário como / u / joe)
File.separarator
vez de cuidar do sistema operacional atual. Por exemplo, "/tmp/foo"
éFile.separator+"tmp"+File.separator+"foo"
Se possível, eu sugeriria a criação Path
direta dos elementos do caminho:
Path path = Paths.get("C:", "dir1", "dir2", "dir3");
// if needed
String textPath = path.toString(); // "C:\\dir1\\dir2\\dir3"
Mesmo quando a pergunta é sobre o Java 7, acho que agrega valor saber que, a partir do Java 11, existe um método estático na Path
classe que permite fazer isso imediatamente:
Com todo o caminho em uma String:
Path.of("/tmp/foo");
Com o caminho dividido em várias seqüências de caracteres:
Path.of("/tmp","foo");
Paths.get
.