Anche se la soluzione originale per ottenere la directory corrente utilizzando il file empty Stringworks. Ma si consiglia di utilizzare la user.dirproprietà per la directory corrente e user.homeper la directory home.
Path currentPath = Paths.get(System.getProperty("user.dir"));
Path filePath = Paths.get(currentPath.toString(), "data", "foo.txt");
System.out.println(filePath.toString());
produzione:
/Users/user/coding/data/foo.txt
Dalla documentazione della classe Java Path :
Un percorso è considerato un percorso vuoto se è costituito esclusivamente da un elemento nome che è empty. Accesso a un file utilizzando un empty path is equivalent to accessing the default directoryfile system.
Perché Paths.get("").toAbsolutePath()funziona
Quando una stringa vuota viene passata a Paths.get(""), l' Pathoggetto restituito contiene un percorso vuoto. Ma quando chiamiamo Path.toAbsolutePath(), controlla se la lunghezza del percorso è maggiore di zero, altrimenti utilizza la user.dirproprietà di sistema e restituisce il percorso corrente.
Ecco il codice per l'implementazione del file system Unix: UnixPath.toAbsolutePath ()
Fondamentalmente è necessario creare Pathnuovamente l' istanza una volta risolto il percorso della directory corrente.
Inoltre suggerirei di utilizzare File.separatorCharper il codice indipendente dalla piattaforma.
Path currentRelativePath = Paths.get("");
Path currentDir = currentRelativePath.toAbsolutePath(); // <-- Get the Path and use resolve on it.
String filename = "data" + File.separatorChar + "foo.txt";
Path filepath = currentDir.resolve(filename);
// "data/foo.txt"
System.out.println(filepath);
Produzione:
/Users/user/coding/data/foo.txt
filepath.toString()