Sök…


Syntax

  • Paths.get (String först, String ... mer) // Skapar en Path-instans med dess String-element
  • Paths.get (URI uri) // Skapar en sökvägsinstans av en URI

Skapa vägar

Path klassen används för att programmera att representera en sökväg i filsystemet (och kan därför peka på filer såväl som kataloger, även till icke-existerande)

En sökväg kan erhållas med hjälp av hjälpklassen Paths :

Path p1 = Paths.get("/var/www");
Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt");
Path p4 = Paths.get("/home", "arthur", "files", "diary.tex");

Hämtar information om en sökväg

Information om en sökväg kan fås med metoderna för ett Path :

  • toString() returnerar strängrepresentationen av sökvägen

    Path p1 = Paths.get("/var/www"); // p1.toString() returns "/var/www"
    
  • getFileName() returnerar filnamnet (eller närmare bestämt det sista elementet i sökvägen

    Path p1 = Paths.get("/var/www"); // p1.getFileName() returns "www"
    Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getFileName() returns "HHGTDG.odt"
    
  • getNameCount() returnerar antalet element som bildar sökvägen

    Path p1 = Paths.get("/var/www"); // p1.getNameCount() returns 2
    
  • getName(int index) returnerar elementet vid det givna indexet

    Path p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"
    
  • getParent() returnerar sökvägen för överordnad katalog

    Path p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"
    
  • getRoot() returnerar banans rot

    Path p1 = Paths.get("/var/www"); // p1.getRoot().toString() returns "/"
    Path p3 = Paths.get("C:\\Users\\DentAr\\Documents\\HHGTDG.odt"); // p3.getRoot().toString() returns "C:\\"
    

Manipulera banor

Gå med i två vägar

Vägar kan förenas med metoden resolve() . Den sökta vägen måste vara en delvis sökväg, vilket är en sökväg som inte innehåller rotelementet.

Path p5 = Paths.get("/home/");
Path p6 = Paths.get("arthur/files");
Path joined = p5.resolve(p6);
Path otherJoined = p5.resolve("ford/files");
joined.toString() == "/home/arthur/files"
otherJoined.toString() == "/home/ford/files"

Normalisering av en sökväg

Sökvägar kan innehålla elementen . (som pekar på katalogen du för närvarande är i) och .. (som pekar på överordnad katalog).

Vid användning i en bana . kan tas bort när som helst utan att ändra banans destination, och .. kan tas bort tillsammans med föregående element.

Med Paths API görs detta med .normalize() :

Path p7 = Paths.get("/home/./arthur/../ford/files");
Path p8 = Paths.get("C:\\Users\\.\\..\\Program Files");
p7.normalize().toString() == "/home/ford/files"
p8.normalize().toString() == "C:\\Program Files"

Hämta information med filsystemet

För att interagera med filsystemet använder du metoderna för Files .

Kontrollera existensen

För att kontrollera förekomsten av filen eller katalogen som en sökväg pekar på använder du följande metoder:

Files.exists(Path path)

och

Files.notExists(Path path)

!Files.exists(path) behöver inte nödvändigtvis vara lika med Files.notExists(path) , eftersom det finns tre möjliga scenarier:

  • En fils eller katalogens existens verifieras ( exists returnerar true och notExists returnerar false i detta fall)
  • En fils eller katalogs icke-existens är verfied ( exists returnerar false och notExists returnerar true )
  • Varken förekomsten eller att det inte finns någon existens av en fil eller en katalog kan verifieras (till exempel på grund av åtkomstbegränsningar): Både exists och nonExists exists returnerar falskt.

Kontrollera om en sökväg pekar på en fil eller en katalog

Detta görs med hjälp av Files.isDirectory(Path path) och Files.isRegularFile(Path path)

Path p1 = Paths.get("/var/www");
Path p2 = Paths.get("/home/testuser/File.txt");
Files.isDirectory(p1) == true
Files.isRegularFile(p1) == false

Files.isDirectory(p2) == false
Files.isRegularFile(p2) == true

Få egenskaper

Detta kan göras på följande sätt:

Files.isReadable(Path path)
Files.isWritable(Path path)
Files.isExecutable(Path path)

Files.isHidden(Path path)
Files.isSymbolicLink(Path path)

Få MIME-typ

Files.probeContentType(Path path)

Detta försöker få MIME-typen av en fil. Den returnerar en MIME-typ String, så här:

  • text/plain för textfiler
  • text/html för HTML-sidor
  • application/pdf för PDF-filer
  • image/png för PNG-filer

Läser filer

Filer kan läsas byte- och radmässigt med klassen Files .

Path p2 = Paths.get(URI.create("file:///home/testuser/File.txt"));
byte[] content = Files.readAllBytes(p2);
List<String> linesOfContent = Files.readAllLines(p2);

Files.readAllLines() tar valfritt en charset som parameter (standard är StandardCharsets.UTF_8 ):

List<String> linesOfContent = Files.readAllLines(p2, StandardCharsets.ISO_8859_1);

Skriva filer

Filer kan skrivas bita och linjevis med klassen Files

Path p2 = Paths.get("/home/testuser/File.txt");
List<String> lines = Arrays.asList(
    new String[]{"First line", "Second line", "Third line"});

Files.write(p2, lines);
Files.write(Path path, byte[] bytes)

Befintliga filer kommer att åsidosättas, icke-befintliga filer skapas.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow