empty StringÇalışmaları kullanarak mevcut dizini almak için orijinal çözüm olsa bile . Ancak user.dirözelliğin geçerli dizin ve user.homeana dizin için kullanılması önerilir .
Path currentPath = Paths.get(System.getProperty("user.dir"));
Path filePath = Paths.get(currentPath.toString(), "data", "foo.txt");
System.out.println(filePath.toString());
çıktı:
/Users/user/coding/data/foo.txt
Java Path sınıfı Dokümantasyonundan:
Yol, yalnızca tek bir ad öğesinden oluşuyorsa boş bir yol olarak kabul edilir empty. empty path is equivalent to accessing the default directoryDosya sisteminin bir kullanarak bir dosyaya erişim .
Neden Paths.get("").toAbsolutePath()çalışıyor
Öğesine boş bir dizge iletildiğinde Paths.get(""), döndürülen Pathnesne boş yol içerir. Ama çağırdığımızda Path.toAbsolutePath(), yol uzunluğunun sıfırdan büyük olup olmadığını kontrol eder, aksi takdirde user.dirsistem özelliğini kullanır ve mevcut yolu döndürür.
Unix dosya sistemi uygulamasının kodu: UnixPath.toAbsolutePath ()
Temel olarak Path, geçerli dizin yolunu çözdükten sonra örneği yeniden oluşturmanız gerekir .
Ayrıca File.separatorCharplatformdan bağımsız kod kullanmanızı öneririm .
Path currentRelativePath = Paths.get("");
Path currentDir = currentRelativePath.toAbsolutePath();
String filename = "data" + File.separatorChar + "foo.txt";
Path filepath = currentDir.resolve(filename);
System.out.println(filepath);
Çıktı:
/Users/user/coding/data/foo.txt
filepath.toString()