16 Ağustos 2017 Çarşamba

Path Arayüzü - NIO

Giriş
Bu sınıfı kullanmak için şu satırı dahil ederiz.
import java.nio.file.Path;
Bu sınıf Java 7'den beri var. Yani bayağı eski.

Path ve File birbirlerine dönüştürülebilirler.

Her işletim sınıfının yol için belirlediği bir üst sınır vardır. Linux'ta üst sınır şöyle öğrenilebilir.
# getconf PATH_MAX /
4096

# getconf NAME_MAX /
255
currentPath metodu
İki şekilde alınabilir. İlki System sınıfını kullanmak
Path currentPath = Paths.get(System.getProperty("user.dir"));
İkincisi ise boş string vermek.
Path currentRelativePath = Paths.get("");
Path currentDir = currentRelativePath.toAbsolutePath();
getFileName metodu
Path'in sadece dosya ismi olan kısmını döndürür. Şöyle yaparız.
Path p = Paths.get("C:\\Hello\\AnotherFolder\\The File Name.PDF");
String file = p.getFileName().toString();//The File Name.PDF verir
getFileSystem metodu
Şöyle yaparız.
Path path = ...;
// We obtain the file system of the Path
FileSystem fs = path.getFileSystem();

// We create the new WatchService using the new try() block
WatchService service = fs.newWatchService();
getNameCount metodu
İkiden sonraki tüm kısımları şöyle alırız.
Path incomingPath = Paths.get("C:\\cresttest\\parent_3\\child_3_1_.txt");
Path finalPath = incomingPath.subpath(2, incomingPath.getNameCount()));
getRoot metodu
Path'in temsil ettiği yolun en başındaki kısmı temsil eder.

of metodu

Yeni Path nesnesi yaratır. Paths.get() metodu yerine kullanılabilir.

relativize metodu
Path'in root kısmını çıkararak geri kalan kısmı verir

Örnek
Şöyle yaparız.  Sonuç olarak "data\processed\Test.xml" alırız
File file = new File("C:\\data\\processed\\Test.xml");
Path path = file.toPath();
path = path.getRoot().relativize(path);
Açıklaması şöyle.
path.getRoot() returns C:\
path.relativize(path) returns a relative path to a parameter.
resolve metodu
Path'in altındaki bir dosya ismini Path olarak verir veya İki path nesnesini birleştirir.

Örnek
Şöyle yaparız
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;

private final Path root = Paths.get("uploads");

@Override
public Resource load(String filename) {
  try {
    Path file = root.resolve(filename);
    Resource resource = new UrlResource(file.toUri());

    if (resource.exists() || resource.isReadable()) {
      return resource;
    } else {
      throw new RuntimeException("Could not read the file!");
    }
  } catch (MalformedURLException e) {
    throw new RuntimeException("Error: " + e.getMessage());
  }
}
Örnek
Şöyle yaparız.
Path incomingPath = Paths.get("C:\\cresttest\\parent_3\\child_3_1_.txt");
//getting C:\cresttest\, adding NEW_PATH to it
Path subPathWithAddition = incomingPath.subpath(0, 2).resolve("NEW_PATH");
resolveSibling metodu
resolveSibling metodu yazısına taşıdım

subPath metodu
Path'in belirtilen sayıdaki ilk kısımlarını döndürür
Örnek
Şöyle yaparız.  Sonuç olarak "data\processed\Test.xml" alırız
File file = new File("C:\\data\\processed\\Test.xml");
Path path = file.toPath();
int count = path.getNameCount();                        // the count of names
path = path.subpath(0, count);                          // all the names
Açıklaması şöyle.
path.getNameCount() returns the number of name elements in the path (3 in this case)
path.getName(0) returns data, path.getName(1) returns processed etc...
path.subpath(fromInclusive, toExclusive) returns a relative Path that is a subsequence of the name elements of this path.
Örnek
İlk iki kısmını şöyle alırız.
Path incomingPath = Paths.get("C:\\cresttest\\parent_3\\child_3_1_.txt");
//getting C:\cresttest\
Path subPathWithAddition = incomingPath.subpath(0, 2);
toAbsolutePath metodu
Belirtilen relative path'i absolute path haline getirir.
Path currentRelativePath = Paths.get("");
Path currentDir = currentRelativePath.toAbsolutePath();
toString metodu

Örnek
Path göreceli (relative) de olsa mutlak (absolute) ta olsa sonucu işletim sistemine göre değiştirir
Şöyle yaparız. Burada Windows'ta çalıştığım için / karakterini \ ile değiştirdi
Path path = Paths.get("target/jardirectory");
// target\jardirectory
String directoryPath = path.toString();
Örnek
Şöyle yaparız.
Path sourceFile = ...;
if (sourceFile.toString().toLowerCase().endsWith("jpg")) {...}


Hiç yorum yok:

Yorum Gönder