Die Anleitung zu Java Commons IO
1. Die Bibliothek
Maven Dependency
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
2. IOUtils
IOUtils ist eine Utility-Class, um mit den Daten schneller umzugehen. Wenn Sie das Standard java.io vom Java benutzen, können Sie alles, die Sie möchten, machen. Aber wenn Sie die Code schneller schreiben möchten, mehr Zeit sparen, sollen Sie IOUtils benutzen.
Sehen Sie Javadoc vom IOUtils bei:
Sehen Sie eine Code, die in der normalen Weise behandelt wird (die verfügbaren Dinge in JDK verwenden).
InputStream in = new URL("http://commons.apache.org").openStream();
try {
InputStreamReader inR = new InputStreamReader(in);
BufferedReader buf = new BufferedReader(inR);
String line;
while ((line = buf.readLine()) != null) {
System.out.println(line);
}
} finally {
in.close();
}
Und hier ist die Code mit der Verwendung von class IOUtils:
InputStream in = new URL("http://commons.apache.org").openStream();
try {
System.out.println(IOUtils.toString(in));
} finally {
IOUtils.closeQuietly(in);
}
In Vergleich von 2 oben Code: Obwohl sie ein gleiches Ziel tun, ist die Code mit der Verwendung von IOUtils dann wirklich kürzer
ReadURL1.java
package org.o7planning.tutorial.commonsio.io;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
public class ReadURL1 {
public static void readURL() throws MalformedURLException, IOException {
InputStream in = new URL("http://commons.apache.org").openStream();
try {
InputStreamReader inR = new InputStreamReader(in);
BufferedReader buf = new BufferedReader(inR);
String line;
while ((line = buf.readLine()) != null) {
System.out.println(line);
}
} finally {
in.close();
}
}
public static void main(String[] args) {
try {
readURL();
} catch (Exception e) {
e.printStackTrace();
}
}
}
ReadURL2.java
package org.o7planning.tutorial.commonsio.io;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.io.IOUtils;
public class ReadURL2 {
public static void readURL() throws MalformedURLException, IOException {
InputStream in = new URL("http://commons.apache.org").openStream();
try {
System.out.println(IOUtils.toString(in));
} finally {
IOUtils.closeQuietly(in);
}
}
public static void main(String[] args) {
try {
readURL();
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. FileUtils
Class FileUtils besteht aus die Utility-Method um mit dem Objekt File zu umgehen. Das sind wie die File lesen,schreiben, kopieren, und vergleichen
Die Javadoc von FileUtils nachschlagen:
FileUtilsReadFile.java
package org.o7planning.tutorial.commonsio.fileutils;
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.apache.commons.io.FileUtils;
public class FileUtilsReadFile {
public static void readFile() throws IOException {
File file= new File("D:/test.txt");
List<String> lines= FileUtils.readLines(file);
for(String s: lines) {
System.out.println(s);
}
}
public static void main(String[] args) {
try {
readFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileUtilsTouchFile.java
package org.o7planning.tutorial.commonsio.fileutils;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import java.io.File;
public class FileUtilsTouchFile {
public static void main(String[] args) {
try {
// E:/test not exist on disk
File testFile = new File("E:/test.txt");
// Get last modify time
long fileTimestamp = testFile.lastModified();
System.out.println("Time in milis " + fileTimestamp);
// Using the touch() operation
// If file not exists, it create file.
// It change the file date and time stamps
FileUtils.touch(testFile);
System.out.println("Time in milis updated "
+ testFile.lastModified());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Die erste Durchführung (Wenn E:/test.txt in der Festplatte nicht existiert)
Das 2. Mal laufen (Wenn E:/test.txt wird erstellt und die Zeit der Änderung vom letzten Mal gesetzt wird).
Mit FileUtils können Sie einfach die File von einem Ort zu anderem Ort kopieren und kleben oder die File von einem Odner zu anderem Ordner kopieren
FileUtilsCopyDirectory.java
package org.o7planning.tutorial.commonsio.fileutils;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class FileUtilsCopyDirectory {
public static void main(String[] args) {
File srcDir = new File("C:/test");
File destDir = new File("D:/test/abc");
try {
FileUtils.copyDirectory(srcDir, destDir);
} catch (IOException e) {
e.printStackTrace();
}
}
}
4. FilenameUtils
Class FilenameUtils hat die nutzliche Method um mit dem Name der file ohne die Verwendung des Objekt File zu arbeiten. Diese Class ist für die Anpassung der Unix und Windows, um das Umwandlungsprozess zwischen die Generalumgebung zu unterstützen (wie von der Umgebung der Entwicklungsprogrammierung zur Umgebung der erledigten Produkt verwandeln).
FilenameUtils javadoc:
Das Beispiel: die 2 Punkte in der Pfad von der File löschen
FilenameUtilsNormalize.java
package org.o7planning.tutorial.commonsio.filenameutils;
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilsNormalize {
public static void main(String[] args) {
String filename = "C:/commons/io/../lang/project.xml";
String normalized = FilenameUtils.normalize(filename);
System.out.println(normalized);
}
}
Starten und das Ergebnis bekommen
FilenameUtils hat mehr als 40 Utility-Method. Sie können die Detail im Javadoc sehen
5. FileSystemUtils
Class FileSystemUtils hat die Utility- Method für den Umgang mit dem Dateisystem um die von JDK nicht unterstützten Funktion zuzugreifen. Jetzt hat diese Class nur die Method, um den leeren Raum in dem Laufwerk zu schaffen. Beachten Sie, dass sie den Befehl command line benutzt (keine natütliche Code benutzen (native code)
FileSystemUtilsFreeSpaceKb.java
package org.o7planning.tutorial.commonsio.filesystemutils;
import java.io.IOException;
import org.apache.commons.io.FileSystemUtils;
public class FileSystemUtilsFreeSpaceKb {
public static void main(String[] args) {
try {
Long kb = FileSystemUtils.freeSpaceKb("C:/");
System.out.println("Free Space: " + kb + "KB");
} catch (IOException e) {
e.printStackTrace();
}
}
}
6. Line iterator
Class org.apache.commons.io.LineIterator bietet flexibel, um mit einer Datei nach der Zeile zu arbeiten. Ein Beispiel kann direkt erstellt oder durch die Method von FileUtils oder IOUtils erstellt. Sie sollen verwenden nach der Maßnahme ...:
LineIterator it = FileUtils.lineIterator(file, "UTF-8");
try {
while (it.hasNext()) {
String line = it.nextLine();
// / do something with line
}
} finally {
LineIterator.closeQuietly(it);
}
LineIteratorExample.java
package org.o7planning.tutorial.commonsio.lineiterator;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
public class LineIteratorExample {
public static void main(String[] args) {
try {
File file = new File("D:/test.txt");
LineIterator it = FileUtils.lineIterator(file, "UTF-8");
try {
while (it.hasNext()) {
String line = it.nextLine();
//
if (line != null && line.startsWith("##")) {
System.out.println(line.substring(2));
}
}
} finally {
LineIterator.closeQuietly(it);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
7. File filters (Der File Filter)
Die Package org.apache.commons.io.filefilter definiert eine Interface (IOFileFilter), die 2 interface: java.io.FileFilter und java.io.FilenameFilter kombiniert. Außerdem hat sie eine Menge der Implementierungsklasse IOFileFilter damit Sie sie bereit benutzen und sie hat auch die Ultility-Klasse (FileFilterUtils) damit Sie die Filter miteinander zur Erstellung eines neuen Filter kombinieren können. Sie werden zum File-Filtern nach Ihrer Bedarf oder in FileDialog benutzt.
Zum Beispiel: java.io.FileFilter kann benutzt werden um die File nach Ihrem Bedarf in einem Verzeichnis zu filtern. Aber es ist besser wenn Sie die Klasse in der Package org.apache.commons.io.filefilter benutzen. Einige sind verfügbar zu benutzen
Schauen Sie ein Beispiel ohne die Benutzung von org.apache.commons.io.filefilter
FileFilterExample1.java
package org.o7planning.tutorial.commonsio.filefilter;
import java.io.File;
import java.io.FileFilter;
public class FileFilterExample1 {
public static void main(String[] args) {
FileFilter filter = new MyFileFilter();
File dir = new File("C:/test");
// Get file with extension js or css.
File[] list = dir.listFiles(filter);
for (File file : list) {
System.out.println("File " + file.getAbsolutePath());
}
}
// Filter accept files (*.js , *.css)
static class MyFileFilter implements FileFilter {
public boolean accept(File pathname) {
String abstractPath = pathname.getAbsolutePath();
if (abstractPath.endsWith(".js") || abstractPath.endsWith(".css")) {
return true;
}
return false;
}
}
}
Und das Beispiel von der Verwendung der Class SuffixFileFilter, liegt in der Package org.apache.commons.io.filefilter
HiddenFileFilterExample.java
package org.o7planning.tutorial.commonsio.filefilter;
import java.io.File;
import org.apache.commons.io.filefilter.HiddenFileFilter;
public class HiddenFileFilterExample {
public static void main(String[] args) {
File dir = new File("C:/test");
String[] files = dir.list(HiddenFileFilter.HIDDEN);
for (int i = 0; i < files.length; i++) {
System.out.println(files[i]);
}
}
}
FileFilterExample2.java
package org.o7planning.tutorial.commonsio.filefilter;
import java.io.File;
import java.io.FileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
public class FileFilterExample2 {
public static void main(String[] args) {
String[] suffixs = new String[] { ".js", ".css" };
FileFilter filter = new SuffixFileFilter(suffixs);
File dir = new File("C:/test");
// Get file with extension js or css.
File[] list = dir.listFiles(filter);
for (File file : list) {
System.out.println("File " + file.getAbsolutePath());
}
}
}
Das Beispiel: Verbindung der 2 Filter
CombineTwoFilterExample.java
package org.o7planning.tutorial.commonsio.filefilter;
import java.io.File;
import java.io.FileFilter;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.HiddenFileFilter;
import org.apache.commons.io.filefilter.IOFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
public class CombineTwoFilterExample {
public static void main(String[] args) {
String[] suffixs = new String[] { ".js", ".css" };
IOFileFilter filter1 = new SuffixFileFilter(suffixs);
//
IOFileFilter filter2 = HiddenFileFilter.VISIBLE;
//
// Filter accept file with extension (js,css) and Visible.
IOFileFilter newFilter = FileFilterUtils
.andFileFilter(filter1, filter2);
File dir = new File("C:/test");
File[] list = dir.listFiles((FileFilter) newFilter);
for (File file : list) {
System.out.println("File " + file.getAbsolutePath());
}
}
}
8. File Comparators (Der File-Vergleicher)
Package org.apache.commons.io.comparator bietet einige Implementierungsclass java.util.Comparator für java.io.File. Die Comparators können die Liste oder ein Array der File ordnen
SizeFileComparatorExample.java
package org.o7planning.tutorial.commonsio.comparator;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.comparator.SizeFileComparator;
public class SizeFileComparatorExample {
public static void main(String[] args) throws IOException {
// Current directory
File directory = new File(".");
File[] files = directory.listFiles();
System.out.println("Default order");
displayFiles(files);
Arrays.sort(files, SizeFileComparator.SIZE_COMPARATOR);
System.out
.println("\nSizeFileComparator.SIZE_COMPARATOR (Ascending, directories treated as 0)");
displayFiles(files);
Arrays.sort(files, SizeFileComparator.SIZE_REVERSE);
System.out
.println("\nSizeFileComparator.SIZE_REVERSE (Descending, directories treated as 0)");
displayFiles(files);
Arrays.sort(files, SizeFileComparator.SIZE_SUMDIR_COMPARATOR);
System.out
.println("\nSizeFileComparator.SIZE_SUMDIR_COMPARATOR (Ascending, directory size used)");
displayFilesWithDirectorySizes(files);
Arrays.sort(files, SizeFileComparator.SIZE_SUMDIR_REVERSE);
System.out
.println("\nSizeFileComparator.SIZE_SUMDIR_REVERSE (Descending, directory size used)");
displayFilesWithDirectorySizes(files);
}
public static void displayFiles(File[] files) {
for (File file : files) {
System.out.printf("%-20s Size:" + file.length() + "\n",
file.getName());
}
}
public static void displayFilesWithDirectorySizes(File[] files) {
for (File file : files) {
if (file.isDirectory()) {
System.out.printf(
"%-20s Size:" + FileUtils.sizeOfDirectory(file) + "\n",
file.getName());
} else {
System.out.printf("%-20s Size:" + file.length() + "\n",
file.getName());
}
}
}
}
Das Ergebnis von dem Laufen der Class SizeFileComparatorExample:
Default order
.classpath Size:1431
.project Size:569
.settings Size:4096
pom.xml Size:547
src Size:0
target Size:0
test.txt Size:0
SizeFileComparator.SIZE_COMPARATOR (Ascending, directories treated as 0)
.settings Size:4096
src Size:0
target Size:0
test.txt Size:0
pom.xml Size:547
.project Size:569
.classpath Size:1431
SizeFileComparator.SIZE_REVERSE (Descending, directories treated as 0)
.classpath Size:1431
.project Size:569
pom.xml Size:547
.settings Size:4096
src Size:0
target Size:0
test.txt Size:0
SizeFileComparator.SIZE_SUMDIR_COMPARATOR (Ascending, directory size used)
test.txt Size:0
.settings Size:489
pom.xml Size:547
.project Size:569
.classpath Size:1431
src Size:11307
target Size:22433
SizeFileComparator.SIZE_SUMDIR_REVERSE (Descending, directory size used)
target Size:22433
src Size:11307
.classpath Size:1431
.project Size:569
pom.xml Size:547
.settings Size:489
test.txt Size:0
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