Die Java-Files-Klasse wurde in Java 1.7 eingeführt und ist Teil des java.nio.file
-Pakets.
Java-Dateien-Klasse
- Die Java-Files-Klasse enthält statische Methoden, die auf Dateien und Verzeichnisse arbeiten.
- Diese Klasse wird für grundlegende Dateioperationen wie das Erstellen, Lesen, Schreiben, Kopieren und Löschen von Dateien oder Verzeichnissen im Dateisystem verwendet.
Bevor wir fortfahren, werfen wir zuerst einen Blick auf die folgenden Begriffe:
Pfad
: Dies ist das Interface, das die Klassejava.io.File
als Repräsentation einer Datei oder eines Verzeichnisses ersetzt, wenn wir in Java NIO arbeiten.- Pfade: Diese Klasse enthält eine statische Methode zum Erstellen einer
Pfad
-Instanz.
java.nio.file.Path
Schnittstelle ist genauso wie die alte java.io.File
Klasse. Path
repräsentiert den Speicherort der Datei, und wenn wir einen Pfad zur neuen Datei erstellen, wird die eigentliche Datei erst erstellt, wenn wir sie mit Files.createFile(Path filePath)
erstellen. Wie im obigen Diagramm zu sehen ist, wird die Klasse Paths verwendet, um eine Instanz von Path zu erstellen, und die Klasse Files verwendet die Path-Instanz, um mit einer Datei zu arbeiten. Datei und
Path
-Objekte wissen, wie sie in die andere umgewandelt werden können. So können wir älteren Code verwenden, um mit dem neuen Datei Dienstprogramm zu interagieren.
Java IO vs NIO
Wie man Pfad erstellt
Wir können ein Objekt von Path
erstellen, indem wir die Methode Paths.get(String first, String... more)
der Klasse Paths
aufrufen.
Path path1 = Paths.get("/tmp/file.txt"); // For UNIX
Path path2 = Paths.get("D:/data/file.txt"); // For Windows
Wir können auch ein Objekt von Path
erstellen, indem wir Teile des Pfads in der Methode Paths.get()
trennen.
Path path1 = Paths.get("/tmp", "file.txt");
Path path2 = Paths.get("D:", "data", "file.txt");
Path path3 = Paths.get("D:/data", "file.txt") ;
Wie wir sehen können, können wir Ordner- und Dateinamen separat in der Methode Paths.get()
übergeben.
Java-Dateimethoden
Die Java NIO-Files-Klasse enthält statische Methoden, die zum Manipulieren von Dateien und Verzeichnissen verwendet werden, und diese Methoden arbeiten hauptsächlich mit dem Path
-Objekt. Schauen wir uns unten die Methoden der Files-Klasse an:
- copy(InputStream in, Path target, CopyOption… options): Diese Methode kopiert alle Bytes aus dem angegebenen Eingabestream in die angegebene Zieldatei und gibt die Anzahl der gelesenen oder geschriebenen Bytes als long-Wert zurück.
- copy(Path source, OutputStream out): Diese Methode kopiert alle Bytes aus der angegebenen Quelldatei in den angegebenen Ausgabestream und gibt die Anzahl der gelesenen oder geschriebenen Bytes als long-Wert zurück.
- copy(Path source, Path target, CopyOption… options): Diese Methode kopiert die angegebene Quelldatei in die angegebene Zieldatei und gibt den Pfad der Zieldatei zurück.
- createDirectories(Path dir, FileAttribute<?>… attrs): Diese Methode erstellt Verzeichnisse mit dem angegebenen Pfad, indem zunächst alle nicht vorhandenen übergeordneten Verzeichnisse erstellt werden. Diese Methode wirft keine Ausnahme, wenn das Verzeichnis nicht erstellt werden konnte, weil es bereits vorhanden ist. FileAttribute ist ein optionaler Parameter, der automatisch festgelegt wird, wenn die nicht vorhandenen Verzeichnisse erstellt werden, und gibt den Pfad des erstellten Verzeichnisses zurück.
- createDirectory(Path dir, FileAttribute<?>… attrs): Diese Methode erstellt ein Verzeichnis mit dem angegebenen Pfad. Wenn das Verzeichnis erfolgreich erstellt wird, wird der Pfad des erstellten Verzeichnisses zurückgegeben. Wenn das Verzeichnis bereits existiert, wird eine nio.file.FileAlreadyExistsException ausgelöst.
- createFile(Path path, FileAttribute<?>… attrs): Diese Methode erstellt eine neue leere Datei mit dem angegebenen Pfad und gibt den Pfad der neu erstellten Datei zurück, wenn sie erfolgreich erstellt wird. Wenn die Datei bereits existiert, wird eine nio.file.FileAlreadyExistsException ausgelöst.
- createTempDirectory(Path dir, String prefix, FileAttribute<?>… attrs): Diese Methode erstellt ein temporäres Verzeichnis mit dem angegebenen Pfad und generiert den Namen des Verzeichnisses mit dem angegebenen Präfix. Sie gibt den Pfad des neu erstellten temporären Verzeichnisses zurück.
- createTempDirectory(String prefix, FileAttribute<?>… attrs): Diese Methode erstellt ein temporäres Verzeichnis im Standardverzeichnis für temporäre Dateien und generiert den Namen des Verzeichnisses mit dem angegebenen Präfix. Sie gibt den Pfad des neu erstellten temporären Verzeichnisses zurück, das mit dem Standard-Dateisystem verbunden ist.
- createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>… attrs): Diese Methode erstellt eine temporäre Datei im angegebenen Verzeichnis und generiert den Dateinamen mit dem angegebenen Präfix und Suffix. Sie gibt den Pfad der neu erstellten Datei zurück.
- createTempFile(String prefix, String suffix, FileAttribute<?>… attrs): Diese Methode erstellt eine temporäre Datei im Standardverzeichnis für temporäre Dateien, generiert den Dateinamen mit dem angegebenen Präfix und Suffix und gibt den Pfad der neu erstellten Datei zurück.
- delete(Path path): Diese Methode ist void und löscht einfach die Datei vom angegebenen Pfad. Diese Methode wirft eine NoSuchFileException aus, wenn die Datei am angegebenen Pfad nicht existiert, und wenn die Datei ein Verzeichnis ist, möglicherweise nicht leer ist und nicht gelöscht werden kann, wirft sie in diesem Fall eine
- deleteIfExists(Path path): Diese Methode überprüft, ob die Datei vor dem Löschen existiert, und gibt den booleschen Wert true zurück, wenn die Datei am angegebenen Pfad erfolgreich gelöscht wird, und false, wenn die Datei am angegebenen Pfad nicht existiert. Wenn die Datei ein Verzeichnis ist und möglicherweise nicht leer und nicht löschbar ist, wird in diesem Fall eine
- exists(Path path): Diese Methode überprüft, ob die Datei am angegebenen Pfad existiert, und gibt true zurück, wenn die Datei existiert, andernfalls false.
- getLastModifiedTime(Path path, Linkoption… options): Diese Methode gibt die zuletzt geänderte Zeit einer Datei am angegebenen Pfad zurück als
- getOwner(Path path, Linkoption… options): Diese Methode gibt einen UserPrincipal zurück, der den Besitzer der Datei am angegebenen Pfad darstellt.
- isDirectory(Path path, LinkOption… options): Diese Methode überprüft, ob die Datei im angegebenen Pfad ein Verzeichnis ist. Sie gibt true zurück, wenn die Datei ein Verzeichnis ist, und false, wenn die Datei nicht existiert, kein Verzeichnis ist oder nicht festgestellt werden kann, ob die Datei ein Verzeichnis ist oder nicht.
- isExecutable(Path path): Diese Methode überprüft, ob die Datei im angegebenen Pfad ausführbar ist, und prüft auch, ob die Datei existiert und ob diese JVM die erforderlichen Berechtigungen zum Ausführen der Datei hat. Sie gibt true zurück, wenn die Datei im angegebenen Pfad existiert und ausführbar ist, und false, wenn die Datei nicht existiert oder die JVM nicht über ausreichende Berechtigungen zum Ausführen der Datei verfügt oder der Zugriff nicht festgestellt werden kann.
- isHidden(Path path): Diese Methode gibt an, ob die Datei im angegebenen Pfad als versteckt betrachtet wird. Die genaue Definition von „versteckt“ hängt vom Betriebssystem oder Anbieter ab. Im Fall eines UNIX-Systems gilt eine Datei als versteckt, wenn der Dateiname mit einem Punktzeichen (‚.‘) beginnt. Im Fall von WINDOWS gilt eine Datei als versteckt, wenn es sich nicht um ein Verzeichnis handelt und das DOS-Versteckt-Attribut gesetzt ist. Sie gibt true zurück, wenn die Datei im angegebenen Pfad als versteckt betrachtet wird, andernfalls false.
- isReadable(Path path): Diese Methode testet, ob die Datei im angegebenen Pfad lesbar ist oder nicht. Sie gibt true zurück, wenn die Datei im angegebenen Pfad existiert und lesbar ist, und false, wenn die Datei nicht existiert oder der Lesezugriff verweigert ist, weil die JVM nicht über ausreichende Berechtigungen verfügt oder der Zugriff nicht festgestellt werden kann.
- isWritable(Path path): Diese Methode überprüft, ob die Datei im angegebenen Pfad beschreibbar ist oder nicht. Sie gibt true zurück, wenn die Datei im angegebenen Pfad existiert und beschreibbar ist, und false, wenn die Datei nicht existiert oder der Schreibzugriff verweigert wird, weil die JVM nicht über ausreichende Privilegien verfügt oder der Zugriff nicht bestimmt werden kann.
- move(Path source, Path target, CopyOption… options): Diese Methode verschiebt oder benennt eine Quelldatei in eine Zieldatei um und gibt den Pfad der Zieldatei zurück. Der Optionsparameter kann Folgendes enthalten: REPLACE_EXISTING: Dies bedeutet, dass, wenn die Zieldatei existiert, sie ersetzt wird, wenn es sich nicht um ein nicht leeres Verzeichnis handelt. ATOMIC_MOVE: Dies bedeutet, dass die Verschiebung als atomare Dateisystemoperation ausgeführt wird und alle anderen Optionen ignoriert werden. Diese Methode wirft eine FileAleadyExistsException aus, wenn die Zieldatei existiert, aber nicht ersetzt werden kann, weil die Option REPLACE_EXISTING nicht angegeben ist. Diese Methode wirft eine DirectoryNotEmptyException aus, wenn die Option REPlACE_EXISTING angegeben ist, aber die Datei nicht ersetzt werden kann, weil es sich um ein nicht leeres Verzeichnis handelt.
- newBufferedReader(Path path, Charset cs): Diese Methode öffnet eine Datei mit dem angegebenen Pfad zum Lesen, indem sie einen BufferedReader zurückgibt, der zum Lesen von Text aus der Datei verwendet wird. Bytes aus der Datei werden unter Verwendung des angegebenen Zeichensatzes in Zeichen decodiert.
- newBufferedWriter(Path path, Charset cs, OpenOption… options): Diese Methode öffnet oder erstellt eine Datei unter Verwendung des angegebenen Pfads zum Schreiben, indem sie einen BufferedWriter zurückgibt, der zum Schreiben von Text in die Datei verwendet wird. Der Optionsparameter gibt an, wie die Datei erstellt oder geöffnet wird. Wenn keine Option angegeben ist, werden standardmäßig die Optionen CREATE, TRUNCATE_EXISTING und WRITE berücksichtigt. Das bedeutet, dass die Datei zum Schreiben geöffnet wird und erstellt wird, wenn die Datei nicht existiert, oder eine vorhandene Datei auf die Größe 0 abgeschnitten wird, wenn sie existiert. Diese Methode wirft eine UnsupportedOperationException aus, wenn eine nicht unterstützte Option angegeben ist.
- newByteChannel(Path path, OpenOption… options): Diese Methode erstellt oder öffnet die Datei unter Verwendung des angegebenen Pfads, indem sie einen seekbaren Byte-Kanal zurückgibt, um auf die Datei zuzugreifen. Diese Methode wirft eine UnsupportedOperationException aus, wenn eine nicht unterstützte Option angegeben ist.
- newDirectoryStream(Path path): Diese Methode öffnet ein Verzeichnis, indem sie einen DirectoryStream zurückgibt, um über alle Einträge im Verzeichnis vom angegebenen Pfad zu iterieren. Die von DirectoryStream’s Iterator zurückgegebenen Elemente sind vom Typ Path und repräsentieren jeweils einen Eintrag im Verzeichnis. Diese Methode wirft eine NotDirectoryException aus, wenn die Datei am angegebenen Pfad nicht geöffnet werden konnte, weil es sich nicht um ein Verzeichnis handelt.
- newDirectoryStream(Path path, Filter super Path> filter): Diese Methode öffnet ein Verzeichnis, indem sie einen DirectoryStream zurückgibt, um alle Einträge im Verzeichnis vom angegebenen Pfad aus zu durchlaufen. Die Elemente, die vom Iterator des DirectoryStream zurückgegeben werden, sind vom Typ Path und jeder repräsentiert einen Eintrag im Verzeichnis. Diese Einträge werden durch den angegebenen Filter gefiltert. Diese Methode wirft NotDirectoryException, wenn die Datei am angegebenen Pfad nicht geöffnet werden konnte, weil es sich nicht um ein Verzeichnis handelt.
- newDirectoryStream(Path path, String glob): Diese Methode öffnet ein Verzeichnis, indem sie einen DirectoryStream zurückgibt, um alle Einträge im Verzeichnis vom angegebenen Pfad aus zu durchlaufen. Die Elemente, die vom Iterator des DirectoryStream zurückgegeben werden, sind vom Typ Path und jeder repräsentiert einen Eintrag im Verzeichnis. Diese Einträge werden durch Vergleichen der Zeichenfolgendarstellung ihrer Dateinamen mit dem angegebenen Globbing-Muster gefiltert. Diese Methode wirft NotDirectoryException, wenn die Datei am angegebenen Pfad nicht geöffnet werden konnte, weil es sich nicht um ein Verzeichnis handelt, und PatternSyntaxException, wenn das Muster ungültig ist.
- newInputStream(Path path, Openoption… options): Diese Methode öffnet eine Datei, indem sie einen Eingabestrom zurückgibt, um die Datei vom angegebenen Pfad aus zu lesen. Der options-Parameter bestimmt, wie die Datei geöffnet wird, und wenn keine Optionen angegeben sind, wird die Datei mit READ geöffnet. Diese Methode wirft IllegalArgumentException, wenn eine ungültige Kombination von Optionen angegeben ist, und UnsupportedOperationException, wenn eine nicht unterstützte Option angegeben ist.
- newOutputStream(Path path, Openoption… options): Diese Methode öffnet eine Datei, indem sie einen Ausgabestrom zurückgibt, um Bytes in die Datei am angegebenen Pfad zu schreiben. Der Parameter options bestimmt, wie die Datei geöffnet wird. Wenn keine Option angegeben ist, werden standardmäßig die Optionen CREATE, TRUNCATE_EXISTING und WRITE berücksichtigt. Dies bedeutet, dass die Datei zum Schreiben geöffnet wird und erstellt wird, wenn die Datei nicht vorhanden ist, oder eine vorhandene Datei auf die Größe 0 zurückgeschnitten wird, wenn sie vorhanden ist. Diese Methode wirft eine IllegalArgumentException aus, wenn eine ungültige Kombination von Optionen angegeben ist, und eine UnsupportedOperationException, wenn eine nicht unterstützte Option angegeben ist.
- notExists(Path path, LinkOption options): Diese Methode überprüft, ob die Datei am angegebenen Pfad nicht vorhanden ist. Der Parameter options wird verwendet, um anzuzeigen, wie symbolische Links behandelt werden, wenn die Datei ein symbolischer Link ist. Standardmäßig werden symbolische Links verfolgt. Wenn die Option NOFOLLOW_LINK vorhanden ist, werden symbolische Links nicht verfolgt. Diese Methode gibt true zurück, wenn die Datei am angegebenen Pfad nicht vorhanden ist, und false, wenn die Datei vorhanden ist oder wenn ihre Existenz nicht festgestellt werden kann.
- readAllBytes(Path path): Diese Methode liest alle Bytes aus der Datei am angegebenen Pfad und gibt das Byte-Array zurück, das die aus der Datei gelesenen Bytes enthält.
- readAllLines(Path path, Charset cs): Diese Methode liest alle Zeilen aus der Datei am angegebenen Pfad und gibt die Liste zurück, die die Zeilen aus der Datei enthält.
- Größe(Path pfad): Diese Methode gibt die Größe der Datei am angegebenen Pfad in Bytes zurück.
- walkFileTree(Path start, FileVisitor<? Super Pfad> visitor): Diese Methode wird verwendet, um das Verzeichnis zu durchsuchen. Es durchläuft das Verzeichnis am angegebenen Pfad rekursiv und gibt die Ausgangsdatei zurück.
- write(Path pfad, byte[] bytes, OpenOption… optionen): Diese Methode schreibt Bytes in eine Datei am angegebenen Pfad. Der Optionsparameter gibt an, wie die Datei erstellt oder geöffnet wird. Wenn keine Option angegeben ist, werden standardmäßig die Optionen CREATE, TRUNCATE_EXISTING und WRITE verwendet. Das bedeutet, dass die Datei zum Schreiben geöffnet wird und erstellt wird, wenn die Datei nicht existiert, oder eine vorhandene Datei auf die Größe 0 zurückgesetzt wird, wenn sie existiert. Alle Bytes im Byte-Array werden in die Datei geschrieben. Diese Methode stellt sicher, dass die Datei geschlossen wird, wenn alle Bytes geschrieben wurden, und gibt den Pfad der geschriebenen Datei zurück.
Erstellen Sie eine Datei mit der Files-Klasse
Die Klasse Files bietet die Methode createFile(Path dateipfad, FileAttribute<?>… attribute)
zum Erstellen einer Datei unter Verwendung des angegebenen Pfads. Schauen wir uns das folgende Beispielprogramm an.
package com.journaldev.examples;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* Java Create file using Files class
*
* @author pankaj
*
*/
public class FilesCreateFileExample {
public static void main(String[] args) {
//initialisiere Path-Objekt
Path path = Paths.get("D:/data/file.txt");
//erstelle Datei
try {
Path createdFilePath = Files.createFile(path);
System.out.println("File Created at Path : "+createdFilePath);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Die Ausgabe des obigen Programms lautet:
File Created at Path : D:\data\file.txt
Mit der Files-Klasse Verzeichnisse erstellen
Die Files-Klasse bietet die Methoden createDirectory(Path dir, FileAttribute<?>… attrs)
und createDirectories(Path dir, FileAttribute<?>… attrs)
zum Erstellen von einzelnen und mehrstufigen Verzeichnissen unter Verwendung des angegebenen Path
. Schauen wir uns das folgende Beispielprogramm an.
package com.journaldev.examples;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* Java Create directories using Files class
*
* @author pankaj
*
*/
public class FilesCreateDirectoriesExample {
public static void main(String[] args) {
// Initialisierung von Path-Objekten
Path path1 = Paths.get("D:/pankaj");
Path path2 = Paths.get("D:/pankaj/java7");
Path path3 = Paths.get("D:/pankaj/java7/Files");
try {
Path createdDir1 = Files.createDirectory(path1);//first level directory
Path createdDir2 = Files.createDirectory(path2);//second level directory
Path createdDir3 = Files.createDirectory(path3);//all level directories
System.out.println("First Level Directory Created at Path : "+createdDir1);
System.out.println("Second Level Directory Created at Path : "+createdDir2);
System.out.println("All Level Directories Created at Path : "+createdDir3);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Die Ausgabe des obigen Programms lautet:
First Level Directory Created at Path : D:\pankaj
Second Level Directory Created at Path : D:\pankaj\java7
All Level Directories Created at Path : D:\pankaj\java7\Files
Datei in Pfad und umgekehrt konvertieren
Datei- und Pfadobjekte können mithilfe der folgenden Methoden ineinander konvertiert werden:
File file = new File(“D:/data/file.txt”);
Path path = file.toPath();
File file1 = path.toFile();
Dateidaten mit der Files-Klasse lesen
Die Files-Klasse stellt folgende Methoden zum Lesen von Dateien bereit.
readAllBytes(Path path)
: Diese Methode liest alle Bytes aus der Datei am angegebenen Pfad und gibt das Byte-Array zurück, das die aus der Datei gelesenen Bytes enthält.readAllLines(Path path,Charsetcs)
: Diese Methode liest alle Zeilen aus der Datei am angegebenen Pfad und gibt die List zurück, die die Zeilen aus der Datei enthält.
Schauen wir uns das folgende Beispielprogramm an.
package com.journaldev.examples;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
/**
* Java Files read file example
*
* @author pankaj
*
*/
public class FilesReadFileExample {
public static void main(String[] args) {
Path path = Paths.get("D:/data/file.txt");
try {
byte[] bs = Files.readAllBytes(path);
List<String> strings = Files.readAllLines(path);
System.out.println("Read bytes: \n"+new String(bs));
System.out.println("Read lines: \n"+strings);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Die Ausgabe des obigen Programms lautet wie folgt:
Read bytes:
Hello world
This is Read file example
Thank you
Read lines:
[Hello world, This is Read file example, Thank you]
Datei mit der Files-Klasse kopieren
Die Klasse Files bietet die Methode copy(Path source, Path target, CopyOption… options)
, die die angegebene Quelldatei in die angegebene Zieldatei kopiert und den Pfad der Zieldatei zurückgibt. Schauen wir uns das folgende Beispielprogramm an:
package com.journaldev.examples;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
/**
* Java Files copy file example
*
* @author pankaj
*
*/
public class FilesCopyFileExample {
public static void main(String[] args) {
Path sourcePath = Paths.get("D:/data/sourceFile.txt");
Path targetPath = Paths.get("D:/data/targetFile.txt");
try {
Path path = Files.copy(sourcePath, targetPath,StandardCopyOption.REPLACE_EXISTING);//copy with REPLACE_EXISTING option
System.out.println("Target file Path : "+path);
System.out.println("Copied Content : \n"+new String(Files.readAllBytes(path)));
} catch (Exception e) {
e.printStackTrace();
}
}
}
Die Ausgabe des obigen Programms lautet wie folgt:
Target file Path : D:\data\targetFile.txt
Copied Content :
Hello world
This is Copy file example
Thank you
Datei mit der Files-Klasse verschieben
Die Java Files-Klasse bietet die Methode move(Path source, Path target, CopyOption... options)
, die eine Quelldatei in eine Zieldatei verschiebt oder umbenennt und den Pfad der Zieldatei zurückgibt. Der Optionsparameter kann Folgendes enthalten: REPLACE_EXISTING: Es bedeutet, dass die Zieldatei ersetzt wird, wenn sie existiert und es sich nicht um ein nicht leeres Verzeichnis handelt. ATOMIC_MOVE: Es bedeutet, dass der Verschiebevorgang als atomare Dateisystemoperation ausgeführt wird und alle anderen Optionen ignoriert werden. Diese Methode wirft eine FileAleadyExistsException
aus, wenn die Zieldatei existiert, aber nicht ersetzt werden kann, weil die Option REPLACE_EXISTING nicht angegeben ist. Diese Methode wirft eine DirectoryNotEmptyException
aus, wenn die Option REPlACE_EXISTING angegeben ist, aber die Datei nicht ersetzt werden kann, weil es sich um ein nicht leeres Verzeichnis handelt. Werfen Sie einen Blick auf das unten stehende Beispielprogramm:
package com.journaldev.examples;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
/**
* Java Files move file example
*
* @author pankaj
*
*/
public class FilesMoveFileExample {
public static void main(String[] args) {
Path sourcePath = Paths.get("D:/data/sourceFile.txt");
Path targetPath = Paths.get("D:/data/targetFile.txt");
try {
Path path = Files.move(sourcePath, targetPath,StandardCopyOption.REPLACE_EXISTING);//move with REPLACE_EXISTING option
System.out.println("Target file Path : "+path);
System.out.println("Moved Content : \n"+new String(Files.readAllBytes(path)));
} catch (Exception e) {
e.printStackTrace();
}
}
}
Datei schreiben mit der Files-Klasse
Die Java NIO-Dateiklasse bietet die Methode write(Path path, byte[] bytes, OpenOption… options)
an, die Bytes in eine Datei am angegebenen Pfad schreibt. Das Optionsargument gibt an, wie die Datei erstellt oder geöffnet wird. Wenn keine Option angegeben ist, werden standardmäßig die Optionen CREATE, TRUNCATE_EXISTING und WRITE berücksichtigt. Dies bedeutet, dass die Datei zum Schreiben geöffnet wird und erstellt wird, wenn die Datei nicht vorhanden ist, oder die vorhandene Datei auf die Größe 0 abgeschnitten wird, wenn sie vorhanden ist. Alle Bytes im Byte-Array werden in die Datei geschrieben. Diese Methode stellt sicher, dass die Datei geschlossen wird, wenn alle Bytes geschrieben wurden, und gibt den Pfad der geschriebenen Datei zurück.
package com.journaldev.examples;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
/**
* Java Files write file example
*
* @author pankaj
*
*/
public class FilesWriteFileExample {
public static void main(String[] args) {
Path path = Paths.get("D:/data/test.txt");
try {
String str = "This is write file Example";
byte[] bs = str.getBytes();
Path writtenFilePath = Files.write(path, bs);
System.out.println("Written content in file:\n"+ new String(Files.readAllBytes(writtenFilePath)));
} catch (Exception e) {
e.printStackTrace();
}
}
}
Dateibaum durchlaufen
Die Dateiklasse bietet die Methode walkFileTree(Path start, FileVisitor<? Super Path> visitor) an, die zum Durchlaufen des Verzeichnisses verwendet wird. Sie durchläuft das Verzeichnis am angegebenen Pfad rekursiv und gibt die Startdatei zurück.
package com.journaldev.examples;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;
/**
* Java Files walk file tree example
*
* @author pankaj
*
*/
public class FilesWalkFileTreeExample {
public static void main(String[] args) {
Path path = Paths.get("D:/pankaj");
try {
Files.walkFileTree(path, new FileVisitor<Path>() {
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
System.out.println("Post Visit Directory: "+dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
System.out.println("Pre Visit Directory: "+dir);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("Visit File: "+file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
System.out.println("Visit Failed File: "+file);
return FileVisitResult.CONTINUE;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
Die Ausgabe des obigen Programms lautet wie folgt:
Pre Visit Directory: D:\pankaj
Pre Visit Directory: D:\pankaj\java6
Pre Visit Directory: D:\pankaj\java6\Files
Visit File: D:\pankaj\java6\Files\file.txt.txt
Post Visit Directory: D:\pankaj\java6\Files
Post Visit Directory: D:\pankaj\java6
Pre Visit Directory: D:\pankaj\java7
Pre Visit Directory: D:\pankaj\java7\Files
Visit File: D:\pankaj\java7\Files\file.txt.txt
Post Visit Directory: D:\pankaj\java7\Files
Post Visit Directory: D:\pankaj\java7
Pre Visit Directory: D:\pankaj\java8
Pre Visit Directory: D:\pankaj\java8\Files
Visit File: D:\pankaj\java8\Files\file.txt.txt
Post Visit Directory: D:\pankaj\java8\Files
Post Visit Directory: D:\pankaj\java8
Post Visit Directory: D:\pankaj
Beachten Sie, dass alle Dateien und Ordner rekursiv verarbeitet werden. Dies ist sehr nützlich, wenn Sie eine gemeinsame Verarbeitung aller Dateien durchführen möchten, z. B. das Umbenennen aller Dateien in einem Verzeichnis rekursiv. Das war alles zur Java-Dateiklasse. Referenz: API-Dokumentation
Source:
https://www.digitalocean.com/community/tutorials/java-files-nio-files-class