Java Language
Ny fil I / O
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ägenPath p1 = Paths.get("/var/www"); // p1.toString() returns "/var/www"
getFileName()
returnerar filnamnet (eller närmare bestämt det sista elementet i sökvägenPath 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ägenPath p1 = Paths.get("/var/www"); // p1.getNameCount() returns 2
getName(int index)
returnerar elementet vid det givna indexetPath p1 = Paths.get("/var/www"); // p1.getName(0) returns "var", p1.getName(1) returns "www"
getParent()
returnerar sökvägen för överordnad katalogPath p1 = Paths.get("/var/www"); // p1.getParent().toString() returns "/var"
getRoot()
returnerar banans rotPath 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
returnerartrue
ochnotExists
returnerarfalse
i detta fall) - En fils eller katalogs icke-existens är verfied (
exists
returnerarfalse
ochnotExists
returnerartrue
) - 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
ochnonExists
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.