Manipulieren von Dateien und Verzeichnissen in Java
1. Die Überblick
In der Praxis müssen Sie regelmäßig mit der Datei und Ordner im System umgehen. Die Aktionen hier sind hinzufügen, löschen, und den Namen ändern. Java bietet Ihnen 2 Class um diese Aktion zu bearbeiten:
- java.io.File
- java.nio.file.Files
java.io.File
Die Class java.io.File vertretet eine File oder einen Odner (directory) des System. Es wird in Java ab der Version von 1.0 eingeführt
java.nio.file.Files
In der Version von 7.0 fügt Java die Class java.nio.file.Files ein. Das vereinfacht die Aktionen mit der File und dem Odner. Alle Methode von der Class sind static und natürlich (static & nature)
Im Dokument führe ich nur die Verwendung von der Class java.io.File, Sie können die java.nio.file.Files bei ... sehen:
- Thao tác với tập tin và thư mục sử dụng Java NIO Files
2. java.io.File
Die Class java.io.File vertretet eine File oder einen Ordner im System, es vertretet einen Pfad (pathname). Das folgende Beispiel erstellt ein Objekt File , das einen Pfad auf Windows oder Unix vertretet
// Window
File apath1 = new File("C:/mydocument/test.txt");
File apath2 = new File("C:/mydocument/java");
// Unix
File apath3 = new File("/mydocument/test.txt");
File apath3 = new File("/mydocument/java");
java.io.File kann einen Pfad (pathname) vertreten und der Pfad kann im System nicht existieren. Wenn existieren, kann er ein Ordner (directory) oder eine Datei (file) sein.
Das folgende einfache Beispiel erstellt ein Objekt File , die einen Pfad vertretet und prüft seine Existenz, schreit die Information auf falls der Pfad existiert
FileInfoExample.java
package org.o7planning.filedirectory;
import java.io.File;
import java.util.Date;
public class FileInfoExample {
public static void main(String[] args) {
// Ein Objekt File zur Vertretung eines Pfad erstellen
File apath = new File("C:/test/mytext.txt");
// Die Existenz prüfen .
System.out.println("Path exists? " + apath.exists());
if (apath.exists()) {
// Prüfen, ob 'apath' ein Verzeichnis ist oder nicht?
System.out.println("Directory? " + apath.isDirectory());
// Prüfen, ob 'apath' ein Pfad ist oder nicht?
System.out.println("Hidden? " + apath.isHidden());
// Der einfache Name.
System.out.println("Simple Name: " + apath.getName());
// Der absolute Pfad.
System.out.println("Absolute Path: " + apath.getAbsolutePath());
// Die Größe der File testen ( nach Byte):
System.out.println("Length (bytes): " + apath.length());
// Die Zeitpunkt zur letzten Änderung (die Milisekunden)
long lastMofifyInMillis = apath.lastModified();
Date lastModifyDate = new Date(lastMofifyInMillis);
System.out.println("Last modify date: " + lastModifyDate);
}
}
}
3. Den Verzeichnis erstellen
Die File bietet 2 Methode zur Erstellung eines Ordner:
Die Methode | Die Bezeichnung |
public boolean mkdir() | Den Ordner durch den Pfad erstellen. Beachten Sie, der Ordner wird nur erstellt wenn der Vater-Ordner existiert. |
public boolean mkdirs() | Den Ordner durch den Pfad erstellen, einschließend den Vater-Ordner auch wenn er existiert nicht |
MakeDirExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class MakeDirExample {
public static void main(String[] args) {
File dir1 = new File("C:/test2/test3");
System.out.println("Pathname: " + dir1.getAbsolutePath());
System.out.println("Path Exists? " + dir1.exists());
System.out.println("Parent Path Exists? " + dir1.getParentFile().exists());
// Mit mkdir() wird das Verzeichnis erstellt wenn der Vaterverzeichnis existiert.
boolean created = dir1.mkdir();
System.out.println("Directory created? " + created);
System.out.println("--------------------");
File dir2 = new File("C:/test2/test3/test4");
System.out.println("Pathname: " + dir2.getAbsolutePath());
System.out.println("Exists? " + dir2.exists());
//
created = dir1.mkdirs();
System.out.println("Directory created? " + created);
}
}
4. Der File Filter
Die Class java.io.File bietet einige Methode um die untergeodneten Datei und die untergeordneten Ordner in einem Ordner abzuholen. Und benutzen Sie FileFilter um die Datei zu filtern
Die Methode | Die Bezeichnung |
static File[] listRoots() | Rückgabe eines Array von den Objekt File, die den Basisordner vertretet. Im Windows sind sie die Diskplatte (C:, D:,..), und im Unix ist es / |
File[] listFiles() | Rückgabe eines Array von den Objekt File, die die Datei und die untergeordneten Ordner von dem jetzigen Ordner sind |
File[] listFiles(FilenameFilter filter) | Rückgabe eines Array von den Objekte File, diedie die Datei und die untergeordneten Ordner von dem jetzigen Ordner sind, und entspricht dem Filter FilenameFilter |
File[] listFiles(FileFilter filter) | Rückgabe eines Array von den Objekte File, diedie die Datei und die untergeordneten Ordner von dem jetzigen Ordner sind, und entspricht dem Filter FilenameFilter |
String[] list() | Rückgabe auf einem Array von Pfad. Sie sind die Pfade von der Datei und von den untergeordneten Ordner der jetzigen Ordner |
String[] list(FilenameFilter filter) | Rückgabe auf einem Array von Pfad. Sie sind die Pfad von der Datei und von den untergeordneten Ordner der jetzigen Ordner und entspricht dem FiltenameFilter auf die Parameters |
Zum Beispiel: die Basisordner auflisten
RootFilesExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class RootFilesExample {
public static void main(String[] args) {
File[] roots = File.listRoots();
for(File root: roots) {
System.out.println(root.getAbsolutePath());
}
}
}
Das folgende Beispeil listet alle Datei und untergeordnete Ordner eines Ordner auf:
FileListExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class FileListExample {
public static void main(String[] args) {
System.out.println("File[] listFiles():\n");
File dir = new File("C:/test");
File[] children = dir.listFiles();
for (File file : children) {
System.out.println(file.getAbsolutePath());
}
System.out.println("\n-----------------------");
System.out.println("String[] list():\n");
String[] paths = dir.list();
for (String path : paths) {
System.out.println(path);
}
}
}
java.io.FileFilter
** FileFilter **
package java.io;
@FunctionalInterface
public interface FileFilter {
boolean accept(File pathname);
}
Das folgend einfache Beispiel verwendet FileFilter um die Datei mit der "txt" im Ordner zu filtern:
TxtFileFilter.java
package org.o7planning.filedirectory;
import java.io.File;
import java.io.FileFilter;
public class TxtFileFilter implements FileFilter {
// Nur 'pathname' als die File und mit der Extension als txt akzeptieren.
@Override
public boolean accept(File pathname) {
if (!pathname.isFile()) {
return false;
}
if (pathname.getAbsolutePath().endsWith(".txt")) {
return true;
}
return false;
}
}
FileFilterExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class FileFilterExample {
public static void main(String[] args) {
File dir = new File("C:/test");
File[] txtFiles = dir.listFiles(new TxtFileFilter());
for (File txtFile : txtFiles) {
System.out.println(txtFile.getAbsolutePath());
}
}
}
java.io.FilenameFilter
** FilenameFilter **
package java.io;
@FunctionalInterface
public interface FilenameFilter {
/**
* Tests if a specified file should be included in a file list.
*
* @param dir the directory in which the file was found.
* @param name the name of the file.
* @return <code>true</code> if and only if the name should be
* included in the file list; <code>false</code> otherwise.
*/
boolean accept(File dir, String name);
}
Das Beispiel benutzt FilenameFilter:
TxtFilenameFilter.java
package org.o7planning.filedirectory;
import java.io.File;
import java.io.FilenameFilter;
public class TxtFilenameFilter implements FilenameFilter {
// den Pfad mit dem Suffix '.txt' akzeptieren
@Override
public boolean accept(File dir, String name) {
if (name.endsWith(".txt")) {
return true;
}
return false;
}
}
FilenameFilterExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class FilenameFilterExample {
public static void main(String[] args) {
File dir = new File("C:/test");
File[] txtFiles = dir.listFiles(new TxtFilenameFilter());
for (File txtFile : txtFiles) {
System.out.println(txtFile.getAbsolutePath());
}
}
}
5. Die Sub-File listen
Die Klasse java.io.File bietet Sie einige Methode zur Auflistung der Ordner und der Datei, die die direkt untergeordnerten Datei vom jetzigen Ordner. Das folgende Beispeil benutzt die Rekursion zur Auflistung der Nachkommensordner (Tochter, Enkel...) und die Nachkommensdatei von einem Ordner
RecursiveFileExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class RecursiveFileExample {
private void fetchChild(File file) {
System.out.println(file.getAbsolutePath());
if (file.isDirectory()) {
File[] children = file.listFiles();
for (File child : children) {
// (Recursive)
this.fetchChild(child);
}
}
}
public static void main(String[] args) {
RecursiveFileExample example = new RecursiveFileExample();
File dir = new File("C:/test");
example.fetchChild(dir);
}
}
6. Den Name bearbeiten (Rename)
Verwenden Sie die Methode rename() von der Klass File, Sie können den Namen ändern (oder auch den Pfad) von einer File oder einem Ordner. Wenn Sie den Pfad ändern, stellen Sie sicher, dass der Vaterordner existiert schon.
Den Name bearbeiten
Das folgend einfache Beispiel bezeichnet die Änderung des Namen einer Datei (oder dem Ordner) aber keine Änderung des Vaterpfad
SimpleRenameExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class SimpleRenameExample {
public static void main(String[] args) {
File srcFile = new File("C:/test/test2/abc.txt");
File destFile = new File("C:/test/test2/def.txt");
boolean renamed = srcFile.renameTo(destFile);
System.out.println("Renamed: "+ renamed);
}
}
Den Namen ändern, auch den Vaterpfad
Den Namen ändern und auch den Vaterpfad, es ist so ähnlich wie die Aktion "Cut" einer File oder eines Ordner zu einem anderen Ordner und dann den Namen ändern
beachten Sie: Mit Windows funktioniert die Methode File.rename() nicht wenn Sie den Pfad von einer Diskplatte zu einer anderen Diskplatte wechseln
RenameAndPathExample.java
package org.o7planning.filedirectory;
import java.io.File;
public class RenameAndPathExample {
public static void main(String[] args) {
// Source file.
File srcFile = new File("C:/test/test2/abc.txt");
// Destination file.
File destFile = new File("C:/test2/test3/defgh.txt");
if (!srcFile.exists()) {
System.out.println("Src File doest not exists");
return;
}
// Die Erstellung vom Vaterverzeichnis der Destinationsfile
destFile.getParentFile().mkdirs();
boolean renamed = srcFile.renameTo(destFile);
System.out.println("Renamed: " + renamed);
}
}
Java Grundlagen
- Anpassen von Java-Compiler, der Ihre Annotation verarbeitet (Annotation Processing Tool)
- Java Programmierung für Team mit Eclipse und SVN
- Die Anleitung zu Java WeakReference
- Die Anleitung zu Java PhantomReference
- Komprimierung und Dekomprimierung in Java
- Konfigurieren von Eclipse zur Verwendung des JDK anstelle von JRE
- Java-Methoden String.format() und printf()
- Syntax und neue Funktionen in Java 8
- Die Anleitung zu Java Reguläre Ausdrücke
- Die Anleitung zu Java Multithreading Programming
- JDBC Driver Bibliotheken für verschiedene Arten von Datenbank in Java
- Die Anleitung zu Java JDBC
- Holen Sie sich die automatisch erhöhenden Wert der Spalte bei dem Insert eines Rekord, der JDBC benutzt
- Die Anleitung zu Java Stream
- Die Anleitung zu Java Functional Interface
- Einführung in Raspberry Pi
- Die Anleitung zu Java Predicate
- Abstrakte Klasse und Interface in Java
- Zugriffsmodifikatoren (Access modifiers) in Java
- Die Anleitung zu Java Enum
- Die Anleitung zu Java Annotation
- Vergleichen und Sortieren in Java
- Die Anleitung zu Java String, StringBuffer und StringBuilder
- Die Anleitung zu Java Exception
- Die Anleitung zu Java Generics
- Manipulieren von Dateien und Verzeichnissen in Java
- Die Anleitung zu Java BiPredicate
- Die Anleitung zu Java Consumer
- Die Anleitung zu Java BiConsumer
- Was ist erforderlich, um mit Java zu beginnen?
- Geschichte von Java und der Unterschied zwischen Oracle JDK und OpenJDK
- Installieren Sie Java unter Windows
- Installieren Sie Java unter Ubuntu
- Installieren Sie OpenJDK unter Ubuntu
- Installieren Sie Eclipse
- Installieren Sie Eclipse unter Ubuntu
- Schnelle lernen Java für Anfänger
- Geschichte von Bits und Bytes in der Informatik
- Datentypen in Java
- Bitweise Operationen
- if else Anweisung in Java
- Switch Anweisung in Java
- Schleifen in Java
- Die Anleitung zu Java Array
- JDK Javadoc im CHM-Format
- Vererbung und Polymorphismus in Java
- Die Anleitung zu Java Function
- Die Anleitung zu Java BiFunction
- Beispiel für Java Encoding und Decoding mit Apache Base64
- Die Anleitung zu Java Reflection
- Java-Remote-Methodenaufruf - Java RMI
- Die Anleitung zu Java Socket
- Welche Plattform sollten Sie wählen für Applikationen Java Desktop entwickeln?
- Die Anleitung zu Java Commons IO
- Die Anleitung zu Java Commons Email
- Die Anleitung zu Java Commons Logging
- Java System.identityHashCode, Object.hashCode und Object.equals verstehen
- Die Anleitung zu Java SoftReference
- Die Anleitung zu Java Supplier
- Java Aspect Oriented Programming mit AspectJ (AOP)
Show More
- Anleitungen Java Servlet/JSP
- Die Anleitungen Java Collections Framework
- Java API für HTML & XML
- Die Anleitungen Java IO
- Die Anleitungen Java Date Time
- Anleitungen Spring Boot
- Anleitungen Maven
- Anleitungen Gradle
- Anleitungen Java Web Services
- Anleitungen Java SWT
- Die Anleitungen JavaFX
- Die Anleitungen Oracle Java ADF
- Die Anleitungen Struts2 Framework
- Anleitungen Spring Cloud