Apache Commons IO - Szybki przewodnik
Biblioteka Apache Commons IO zapewnia różne klasy narzędziowe dla typowych operacji dla File IO, obejmujące szeroki zakres przypadków użycia. Pomaga to uniknąć pisania kodu standardowego.
Biblioteka Apache Commons IO zapewnia klasy dla następujących kategorii -
Klasy użytkowe
Te klasy, które są w ramach org.apache.commons.iopakiet, zapewnia porównanie plików i ciągów. Oto kilka przykładów.
IOUtils- Zapewnia narzędzia do czytania, pisania i kopiowania plików. Metody działają z InputStream, OutputStream, Reader i Writer.
FilenameUtils- Zapewnia metodę pracy z nazwami plików bez korzystania z obiektu pliku. Działa na różnych systemach operacyjnych w podobny sposób.
FileUtils - Zapewnia metody manipulowania plikami, takie jak przenoszenie, otwieranie, sprawdzanie istnienia, odczytywanie pliku itp. Te metody używają obiektu pliku.
IOCase - Zapewnia metodę manipulowania ciągiem i porównywania.
FileSystemUtils - Zapewnia metodę uzyskania wolnego miejsca na dysku.
LineIterator - Zapewnia elastyczny sposób pracy z plikiem opartym na wierszach.
Klasy filtrów
Filtruj klasy, które znajdują się w pakiecie org.apache.commons.io.filefilter, zapewnia metody filtrowania plików na podstawie kryteriów logicznych zamiast żmudnych porównań opartych na ciągach znaków. Oto kilka przykładów.
NameFileFilter - Filtruje nazwy plików dla nazwy.
WildcardFileFilter - Filtruje pliki przy użyciu dostarczonych symboli wieloznacznych.
SuffixFileFilter- Filtruje pliki na podstawie przyrostka. Służy do pobierania wszystkich plików określonego typu.
PrefixFileFilter - Filtruje pliki na podstawie prefiksu.
OrFileFilter- Zapewnia warunkową logikę OR na liście filtrów plików. Zwraca wartość „prawda”, jeśli którykolwiek z filtrów na liście zwraca wartość „prawda”. W przeciwnym razie zwraca fałsz.
AndFileFilter- Zapewnia warunkowanie i logikę na liście filtrów plików. Zwraca fałsz, jeśli którykolwiek z filtrów na liście zwraca fałsz. W przeciwnym razie zwraca true.
Klasy monitora plików
Klasy monitora plików, które są poniżej org.apache.commons.io.monitorpakiet, zapewnia kontrolę nad śledzeniem zmian w określonym pliku lub folderze i pozwala na odpowiednie działanie na zmianach. Oto kilka przykładów.
FileEntry- Zawiera stan pliku lub katalogu. Atrybuty pliku w określonym momencie.
FileAlterationObserver - Reprezentuje stan plików poniżej katalogu głównego, sprawdza system plików i powiadamia słuchaczy o zdarzeniach tworzenia, zmiany lub usuwania.
FileAlterationMonitor - Reprezentuje wątek, który tworzy wątek monitorowania wyzwalający każdy zarejestrowany FileAlterationObserver w określonym interwale.
Klasy porównawcze
Klasy monitora plików w ramach org.apache.commons.io.comparator pakiet pozwala na łatwe porównywanie i sortowanie plików i katalogów.
NameFileComparator - Porównaj nazwy dwóch plików.
SizeFileComparator - Porównaj rozmiar dwóch plików.
LastModifiedFileComparator - Porównaj daty ostatniej modyfikacji dwóch plików.
Zajęcia strumieniowe
Istnieje wiele implementacji InputStream w pakiecie org.apache.commons.io.input i OutputStream w pakiecie org.apache.commons.io.output, aby wykonywać użyteczne zadania na strumieniach. Oto kilka przykładów.
NullOutputStream - Pochłania wszystkie dane wysłane z jakimkolwiek błędem.
TeeOutputStream - Wysyła dane wyjściowe do dwóch strumieni.
ByteArrayOutputStream - Szybsza wersja klasy JDK.
CountingOutputStream - Zlicza liczbę bajtów przepuszczonych przez strumień.
ProxyOutputStream - Zmienia wywołania na strumień proxy.
LockableFileWriter - FileWriter do tworzenia plików blokujących i pozwalający na prostą obsługę blokad plików między wątkami.
W tym rozdziale dowiemy się o konfiguracji środowiska lokalnego Apache Commons IO oraz o tym, jak ustawić ścieżkę Commons IO dla Windows 2000 / XP, Windows 95/98 / ME itp. Zrozumiemy także niektóre popularne edytory java i jak pobrać archiwum Commons IO.
Konfiguracja środowiska lokalnego
Jeśli nadal chcesz skonfigurować swoje środowisko pod kątem języka programowania Java, w tej sekcji dowiesz się, jak pobrać i skonfigurować Javę na swoim komputerze. Wykonaj poniższe czynności, aby skonfigurować środowisko.
Oprogramowanie Java SE jest dostępne bezpłatnie do pobrania pod linkiem https://www.oracle.comWięc pobierasz wersję opartą na systemie operacyjnym.
Postępuj zgodnie z instrukcjami, aby pobrać Javę i uruchomić .exeaby zainstalować Javę na swoim komputerze. Po zainstalowaniu Javy na komputerze należałoby ustawić zmienne środowiskowe, aby wskazywały na prawidłowe katalogi instalacyjne.
Ścieżka do systemu Windows 2000 / XP
Pozwól nam zrozumieć, jak ustawić ścieżkę w systemie Windows 2000 / XP. Zakładamy, że zainstalowałeś Javę wc:\Program Files\java\jdk informator.
Kliknij prawym przyciskiem myszy „Mój komputer” i wybierz „Właściwości”.
Kliknij przycisk „Zmienne środowiskowe” na karcie „Zaawansowane”.
Teraz zmień zmienną „Path”, tak aby zawierała również ścieżkę do pliku wykonywalnego Java. Na przykład, jeśli ścieżka jest obecnie ustawiona na „C: \ WINDOWS \ SYSTEM32”, zmień ścieżkę do odczytu'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.
Ścieżka do Windows 95/98 / ME
Zrozummy, jak ustawić ścieżkę dla Windows 95/98 / ME. Zakładamy, że zainstalowałeś Javę wc:\Program Files\java\jdk informator.
Edytuj plik „C: \ autoexec.bat” i dodaj na końcu następujący wiersz - „SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin”
Ścieżka do systemów Linux, UNIX, Solaris, FreeBSD
Zmienna środowiskowa PATH powinna wskazywać miejsce, w którym zostały zainstalowane pliki binarne Java. Zajrzyj do dokumentacji powłoki, jeśli masz z tym problem.
Na przykład, jeśli używasz bash jako powłoki, to dodasz następujący wiersz na końcu swojego '.bashrc: export PATH = / path / to / java: $ PATH'
Popularne edytory Java
Do pisania programów w języku Java potrzebny jest edytor tekstu. Na rynku dostępnych jest wiele wyrafinowanych IDE. Ale na razie możesz rozważyć jedną z następujących -
Notepad - Na komputerze z systemem Windows możesz użyć dowolnego prostego edytora tekstu, takiego jak Notatnik (zalecany w tym samouczku), TextPad.
Netbeans - Jest to środowisko Java IDE o otwartym kodzie źródłowym i bezpłatne, które można pobrać z witryny https://www.netbeans.org/index.html.
Eclipse - Jest to również środowisko Java IDE opracowane przez społeczność eclipse open source i można je pobrać z witryny https://www.eclipse.org/.
Pobierz wspólne archiwum we / wy
Pobierz najnowszą wersję pliku jar Apache Common IO z commons-io-2.6- bin.zip, który jest dostępny pod adresem download_io.cgi W czasie pisania tego samouczka pobraliśmy plik commons-io-2.6-bin.zip i skopiowaliśmy go do folderu C: \> Apache.
OS | Nazwa archiwum |
---|---|
Windows | commons-io-2.6-bin.zip |
Linux | commons-io-2.6-bin.tar.gz |
Prochowiec | commons-io-2.6-bin.tar.gz |
Środowisko Apache Common IO
Ustaw APACHE_HOMEzmienna środowiskowa wskazująca lokalizację katalogu podstawowego, w którym na komputerze jest przechowywany plik jar Apache. Zakładając, że wyodrębniliśmy plik commons-io-2.6-bin.zip do folderu Apache w różnych systemach operacyjnych w następujący sposób.
OS | Wynik |
---|---|
Windows | Ustaw zmienną środowiskową APACHE_HOME na C: \ Apache |
Linux | eksportuj APACHE_HOME = / usr / local / Apache |
Prochowiec | eksportuj APACHE_HOME = / Library / Apache |
Ustaw zmienną CLASSPATH
Ustaw CLASSPATHzmienna środowiskowa, aby wskazywała lokalizację pliku jar Common IO Zakładając, że przechowujesz commons-io-2.6-bin.zip w folderze Apache w różnych systemach operacyjnych w następujący sposób.
OS | Wynik |
---|---|
Windows | Ustaw zmienną środowiskową CLASSPATH na% CLASSPATH%;% APACHE_HOME% \ commons-io-2.6.jar;.; |
Linux | export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar :. |
Prochowiec | export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar :. |
IOUtils zapewnia narzędzia do odczytywania, pisania i kopiowania plików. Metody działają z InputStream, OutputStream, Reader i Writer.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.IOUtils Klasa -
public class IOUtils
extends Object
Funkcje IOUtils
Funkcje IOUtils podano poniżej -
Zapewnia statyczne metody narzędziowe do operacji wejścia / wyjścia.
toXXX () - odczytuje dane ze strumienia.
write () - zapisuje dane do strumienia.
copy () - kopiuje wszystkie dane do strumienia do innego strumienia.
contentEquals - porównaj zawartość dwóch strumieni.
Przykład klasy IOUtils
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
IOTester.java
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.commons.io.IOUtils;
public class IOTester {
public static void main(String[] args) {
try {
//Using BufferedReader
readUsingTraditionalWay();
//Using IOUtils
readUsingIOUtils();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
//reading a file using buffered reader line by line
public static void readUsingTraditionalWay() throws IOException {
try(BufferedReader bufferReader = new BufferedReader( new InputStreamReader(
new FileInputStream("input.txt") ) )) {
String line;
while( ( line = bufferReader.readLine() ) != null ) {
System.out.println( line );
}
}
}
//reading a file using IOUtils in one go
public static void readUsingIOUtils() throws IOException {
try(InputStream in = new FileInputStream("input.txt")) {
System.out.println( IOUtils.toString( in , "UTF-8") );
}
}
}
Wynik
Wyświetli następujący wynik -
Welcome to TutorialsPoint. Simply Easy Learning.
Welcome to TutorialsPoint. Simply Easy Learning.
FileUtils dostarcza metod do manipulowania plikami, takich jak przenoszenie, otwieranie, sprawdzanie istnienia, odczytywanie pliku itp. Te metody używają obiektu File.
Deklaracja klasy
Poniżej znajduje się deklaracja klasy org.apache.commons.io.FileUtils -
public class FileUtils
extends Object
Funkcje FileUtils
Funkcje FileUtils opisano poniżej -
Metody zapisu do pliku.
Metody odczytu z pliku.
Metody tworzenia katalogu zawierającego katalogi nadrzędne.
Metody kopiowania plików i katalogów.
Metody usuwania plików i katalogów.
Metody konwersji do iz adresu URL.
Metody wyświetlania listy plików i katalogów według filtru i rozszerzenia.
Metody porównywania zawartości plików.
Metody zapisywania ostatniej zmiany daty.
Metody obliczania sumy kontrolnej.
Przykład klasy FileUtils
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
IOTester.java
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import org.apache.commons.io.FileUtils;
public class IOTester {
public static void main(String[] args) {
try {
//Using FileUtils
usingFileUtils();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingFileUtils() throws IOException {
//get the file object
File file = FileUtils.getFile("input.txt");
//get the temp directory
File tmpDir = FileUtils.getTempDirectory();
System.out.println(tmpDir.getName());
//copy file to temp directory
FileUtils.copyFileToDirectory(file, tmpDir);
//create a new file
File newTempFile = FileUtils.getFile(tmpDir, file.getName());
//get the content
String data = FileUtils.readFileToString(newTempFile, Charset.defaultCharset());
//print the content
System.out.println(data);
}
}
Wynik
Dane wyjściowe są wymienione poniżej -
Temp
Welcome to TutorialsPoint. Simply Easy Learning.
FilenameUtils zapewnia metodę do pracy z nazwami plików bez używania File Object. Działa na różnych systemach operacyjnych w podobny sposób. Ta klasa rozwiązuje problemy podczas przechodzenia z maszyny deweloperskiej opartej na systemie Windows na maszynę produkcyjną opartą na systemie Unix.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.FilenameUtils Klasa -
public class FilenameUtils
extends Object
Funkcje FileNameUtils
Ta klasa definiuje sześć komponentów w nazwie pliku. Rozważ przykładową lokalizację jakoC:\dev\project\file.txt. Następnie elementy są następujące:
Prefiks - C: \
Ścieżka względna - dev \ project \
Bezwzględna ścieżka - C: \ dev \ project \
Nazwa - plik.txt
Nazwa podstawowa - plik
Rozszerzenie - txt
Aby zidentyfikować katalog, dodaj separator do nazwy pliku.
Przykład klasy FilenameUtils
Przykład klasy FilenameUtils jest podany poniżej -
IOTester.java
import java.io.IOException;
import org.apache.commons.io.FilenameUtils;
public class IOTester {
public static void main(String[] args) {
try {
//Using FilenameUtils
usingFilenameUtils();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingFilenameUtils() throws IOException {
String path = "C:\\dev\\project\\file.txt";
System.out.println("Full Path: " +FilenameUtils.getFullPath(path));
System.out.println("Relative Path: " +FilenameUtils.getPath(path));
System.out.println("Prefix: " +FilenameUtils.getPrefix(path));
System.out.println("Extension: " + FilenameUtils.getExtension(path));
System.out.println("Base: " + FilenameUtils.getBaseName(path));
System.out.println("Name: " + FilenameUtils.getName(path));
String filename = "C:/commons/io/../lang/project.xml";
System.out.println("Normalized Path: " + FilenameUtils.normalize(filename));
}
}
Wynik
Dane wyjściowe podano poniżej -
Full Path: C:\dev\project\
Relative Path: dev\project\
Prefix: C:\
Extension: txt
Base: file
Name: file.txt
Normalized Path: C:\commons\lang\project.xml
FileSystemUtils zapewnia metodę uzyskiwania wolnego miejsca na dysku.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.FileSystemUtils Klasa -
public class FileSystemUtils
extends Object
Przykład klasy FileSystemUtils
Poniżej podano przykład klasy FileSystemUtils -
IOTester.java
import java.io.IOException;
import org.apache.commons.io.FileSystemUtils;
public class IOTester {
public static void main(String[] args) {
try {
System.out.println("Free Space " + FileSystemUtils.freeSpaceKb("C:/") + " Bytes");
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
}
Wynik
Poniżej podano wynik -
Free Space 61355640 kb
Wyliczenie wielkości liter we / wy. Różne systemy operacyjne mają różne reguły rozróżniania wielkości liter w nazwach plików. Na przykład system Windows nie rozróżnia wielkości liter w nazewnictwie plików, podczas gdy w systemie Unix rozróżniana jest wielkość liter. IOCase przechwytuje tę różnicę, zapewnia wyliczenie kontrolujące sposób wykonywania porównań nazw plików. Zapewnia również metody użycia wyliczenia do wykonywania porównań.
Deklaracja wyliczenia
Poniżej znajduje się deklaracja org.apache.commons.io.IOCase Enum -
public enum IOCase
extends Enum<IOCase> implements Serializable
Przykład IOCase Enum
Przykład IOCase Enum podano poniżej -
IOTester.java
import java.io.IOException;
import org.apache.commons.io.IOCase;
public class IOTester {
public static void main(String[] args) {
try {
usingIOCase();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingIOCase() throws IOException {
String text = "Welcome to TutorialsPoint. Simply Easy Learning.";
String text1 = "WELCOME TO TUTORIALSPOINT. SIMPLY EASY LEARNING.";
System.out.println("Ends with Learning (case sensitive): " + IOCase.SENSITIVE.checkEndsWith(text1, "Learning."));
System.out.println("Ends with Learning (case insensitive): " + IOCase.INSENSITIVE.checkEndsWith(text1, "Learning."));
System.out.println("Equality Check (case sensitive): " + IOCase.SENSITIVE.checkEquals(text, text1));
System.out.println("Equality Check (case insensitive): " + IOCase.INSENSITIVE.checkEquals(text, text1));
}
}
Wynik
Wyświetli następujący wynik -
Ends with Learning (case sensitive): false
Ends with Learning (case insensitive): true
Equality Check (case sensitive): false
Equality Check (case insensitive): true
LineIterator zapewnia elastyczny sposób pracy z plikiem liniowym. Dowiedzmy się o tym samym w tym rozdziale.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.LineIterator Klasa -
public class LineIterator
extends Object implements Iterator<String>, Closeable
Przykład klasy LineIterator
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
public class IOTester {
public static void main(String[] args) {
try {
usingLineIterator();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingLineIterator() throws IOException {
//get the file object
File file = FileUtils.getFile("input.txt");
try(LineIterator lineIterator = FileUtils.lineIterator(file)) {
System.out.println("Contents of input.txt");
while(lineIterator.hasNext()) {
System.out.println(lineIterator.next());
}
}
}
}
Wynik
Wyświetli następujący wynik -
Contents of input.txt
Welcome to TutorialsPoint. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.
NameFileFilter w Commons IO filtruje nazwy plików według nazwy.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.filefilter.NameFileFilter Klasa :
public class NameFileFilter
extends AbstractFileFilter implements Serializable
Przykład klasy NameFileFilter
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
Wydrukujmy wszystkie pliki i katalogi w bieżącym katalogu, a następnie przefiltrujmy plik o nazwie Input.txt.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.IOCase;
import org.apache.commons.io.filefilter.NameFileFilter;
public class IOTester {
public static void main(String[] args) {
try {
usingNameFileFilter();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingNameFileFilter() throws IOException {
//get the current directory
File currentDirectory = new File(".");
//get names of all files and directory in current directory
String[] files = currentDirectory.list();
System.out.println("All files and Folders.\n");
for( int i = 0; i < files.length; i++ ) {
System.out.println(files[i]);
}
System.out.println("\nFile with name input.txt\n");
String[] acceptedNames = {"input", "input.txt"};
String[] filesNames = currentDirectory.list( new NameFileFilter(acceptedNames, IOCase.INSENSITIVE) );
for( int i = 0; i < filesNames.length; i++ ) {
System.out.println(filesNames[i]);
}
}
}
Wynik
Wyświetli następujący wynik -
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with name input.txt
input.txt
WildcardFileFilter w Commons IO filtruje pliki przy użyciu dostarczonych symboli wieloznacznych.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.filefilter.WildcardFileFilter Klasa -
public class WildcardFileFilter
extends AbstractFileFilter implements Serializable
Przykład klasy WildcardFileFilter
Oto plik wejściowy, który musimy przeanalizować
Welcome to TutorialsPoint. Simply Easy Learning.
Wydrukujmy wszystkie pliki i katalogi w bieżącym katalogu, a następnie przefiltrujmy plik, którego nazwa kończy się na t.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.WildcardFileFilter;
public class IOTester {
public static void main(String[] args) {
try {
usingWildcardFileFilter();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingWildcardFileFilter() throws IOException {
//get the current directory
File currentDirectory = new File(".");
//get names of all files and directory in current directory
String[] files = currentDirectory.list();
System.out.println("All files and Folders.\n");
for( int i = 0; i < files.length; i++ ) {
System.out.println(files[i]);
}
System.out.println("\nFile name ending with t.\n");
String[] filesNames = currentDirectory.list( new WildcardFileFilter("*t"));
for( int i = 0; i < filesNames.length; i++ ) {
System.out.println(filesNames[i]);
}
}
}
Wynik
Zostanie wydrukowany następujący wynik.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File name ending with t
.project
input.txt
SuffixFileFilter filtruje pliki oparte na sufiksie. Służy do pobierania wszystkich plików określonego typu.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.filefilter.SuffixFileFilter Klasa -
public class SuffixFileFilter
extends AbstractFileFilter implements Serializable
Przykład klasy SuffixFileFilter
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
Wydrukujmy wszystkie pliki i katalogi w bieżącym katalogu, a następnie przefiltrujmy plik z rozszerzeniem txt.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.SuffixFileFilter;
public class IOTester {
public static void main(String[] args) {
try {
usingSuffixFileFilter();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingSuffixFileFilter() throws IOException {
//get the current directory
File currentDirectory = new File(".");
//get names of all files and directory in current directory
String[] files = currentDirectory.list();
System.out.println("All files and Folders.\n");
for( int i = 0; i < files.length; i++ ) {
System.out.println(files[i]);
}
System.out.println("\nFile with extenstion txt\n");
String[] filesNames = currentDirectory.list( new SuffixFileFilter("txt"));
for( int i = 0; i < filesNames.length; i++ ) {
System.out.println(filesNames[i]);
}
}
}
Wynik
Zostanie wydrukowany następujący wynik.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
PrefixFileFilter filtruje pliki oparte na prefiksie.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.filefilter.PrefixFileFilter Klasa -
public class PrefixFileFilter
extends AbstractFileFilter implements Serializable
Przykład klasy PrefixFileFilter
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
Wydrukujmy wszystkie pliki i katalogi w bieżącym katalogu, a następnie przefiltrujmy plik o nazwie zaczynającej się od wejścia.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.PrefixFileFilter;
public class IOTester {
public static void main(String[] args) {
try {
usingPrefixFileFilter();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingPrefixFileFilter() throws IOException {
//get the current directory
File currentDirectory = new File(".");
//get names of all files and directory in current directory
String[] files = currentDirectory.list();
System.out.println("All files and Folders.\n");
for( int i = 0; i < files.length; i++ ) {
System.out.println(files[i]);
}
System.out.println("\nFile starting with input\n");
String[] filesNames = currentDirectory.list( new PrefixFileFilter("input") );
for( int i = 0; i < filesNames.length; i++ ) {
System.out.println(filesNames[i]);
}
}
}
Wynik
Wyświetli następujący wynik -
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
OrFileFilter zapewnia warunkową logikę OR na liście filtrów plików. Zwraca prawdę, jeśli którykolwiek z filtrów na liście zwraca prawdę. W przeciwnym razie zwraca fałsz.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.filefilter.OrFileFilter Klasa -
public class OrFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Przykład klasy OrFileFilter
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
Wydrukujmy wszystkie pliki i katalogi w bieżącym katalogu, a następnie przefiltrujmy plik o nazwie zaczynającej się od. lub kończy się na t.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.OrFileFilter;
import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.commons.io.filefilter.WildcardFileFilter;
public class IOTester {
public static void main(String[] args) {
try {
usingOrFileFilter();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingOrFileFilter() throws IOException {
//get the current directory
File currentDirectory = new File(".");
//get names of all files and directory in current directory
String[] files = currentDirectory.list();
System.out.println("All files and Folders.\n");
for( int i = 0; i < files.length; i++ ) {
System.out.println(files[i]);
}
System.out.println("\nFile starting with . or ends with t\n");
String[] filesNames = currentDirectory.list( new OrFileFilter(new PrefixFileFilter("."), new WildcardFileFilter("*t")));
for( int i = 0; i < filesNames.length; i++ ) {
System.out.println(filesNames[i]);
}
}
}
Wynik
Zostanie wydrukowany następujący wynik.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.classpath
.project
.settings
input.txt
AndFileFilter zapewnia warunkowe i logiczne na liście filtrów plików. Zwraca prawdę, jeśli wszystkie filtry na liście zwracają prawdę. W przeciwnym razie zwraca fałsz.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.filefilter.AndFileFilter Klasa -
public class AndFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Przykład klasy AndFileFilter
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
Wydrukujmy wszystkie pliki i katalogi w bieżącym katalogu, a następnie przefiltrujmy plik o nazwie zaczynającej się od. i kończy się na t.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.AndFileFilter;
import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.commons.io.filefilter.WildcardFileFilter;
public class IOTester {
public static void main(String[] args) {
try {
usingAndFileFilter();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingAndFileFilter() throws IOException {
//get the current directory
File currentDirectory = new File(".");
//get names of all files and directory in current directory
String[] files = currentDirectory.list();
System.out.println("All files and Folders.\n");
for( int i = 0; i < files.length; i++ ) {
System.out.println(files[i]);
}
System.out.println("\nFile starting with . and ends with t\n");
String[] filesNames = currentDirectory.list(new AndFileFilter(
new PrefixFileFilter("."), new WildcardFileFilter("*t")));
for( int i = 0; i < filesNames.length; i++ ) {
System.out.println(filesNames[i]);
}
}
}
Wynik
Zostanie wydrukowany następujący wynik.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.project
FileEntry zapewnia stan pliku lub katalogu. Atrybuty pliku w określonym momencie.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.monitor.FileEntry Klasa -
public class FileEntry
extends Object implements Serializable
Funkcje FileEntry
Obiekt klasy FileEntry udostępnia w danym momencie następujące atrybuty plików.
getName () - nazwa pliku.
istnieje () - sprawdza, czy plik istnieje, czy nie.
isDirectory () - sprawdza, czy plik jest katalogiem.
lastModified () - podaje datę ostatniej modyfikacji.
listFiles () - podaje zawartość katalogu.
Przykład klasy FileEntry
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileEntry;
public class IOTester {
public static void main(String[] args) {
try {
usingFileEntry();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingFileEntry() throws IOException {
//get the file object
File file = FileUtils.getFile("input.txt");
FileEntry fileEntry = new FileEntry(file);
System.out.println("Monitored File: " + fileEntry.getFile());
System.out.println("File name: " + fileEntry.getName());
System.out.println("Is Directory: " + fileEntry.isDirectory());
}
}
Wynik
Zostanie wydrukowany następujący wynik.
Monitored File: input.txt
File name: input.txt
Is Directory: false
FileAlterationObserver reprezentuje stan plików poniżej katalogu głównego, sprawdza system plików i powiadamia słuchaczy o zdarzeniach tworzenia, zmiany lub usuwania.
Deklaracja klasy
Poniżej znajduje się deklaracja dla
org.apache.commons.io.monitor.FileAlterationObserver Klasa -
public class FileAlterationObserver
extends Object implements Serializable
Przykład klasy FileAlterationObserver
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileDeleteStrategy;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
public class IOTester {
public static void main(String[] args) {
try {
usingFileAlterationObserver();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingFileAlterationObserver() throws IOException {
//get the file object
File inputFile = FileUtils.getFile("input.txt");
String absolutePath = inputFile.getAbsolutePath();
String parent = absolutePath.substring(0,absolutePath.indexOf("input.txt"));
File parentDirectory = FileUtils.getFile(parent);
FileAlterationObserver observer = new
FileAlterationObserver(parentDirectory);
observer.addListener(new FileAlterationListenerAdaptor() {
@Override
public void onDirectoryCreate(File file) {
System.out.println("Folder created: " + file.getName());
}
@Override
public void onDirectoryDelete(File file) {
System.out.println("Folder deleted: " + file.getName());
}
@Override
public void onFileCreate(File file) {
System.out.println("File created: " + file.getName());
}
@Override
public void onFileDelete(File file) {
Syst em.out.println("File deleted: " + file.getName());
}
});
//create a monitor to check changes after every 500 ms
FileAlterationMonitor monitor = new FileAlterationMonitor(500, observer);
try {
monitor.start();
//create a new directory
File newFolder = new File("test");
File newFile = new File("test1");
newFolder.mkdirs();
Thread.sleep(1000);
newFile.createNewFile();
Thread.sleep(1000);
FileDeleteStrategy.NORMAL.delete(newFolder);
Thread.sleep(1000);
FileDeleteStrategy.NORMAL.delete(newFile);
Thread.sleep(1000);
monitor.stop(10000);
} catch(IOException e) {
System.out.println(e.getMessage());
} catch(InterruptedException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Wynik
Zostanie wydrukowany następujący wynik.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
FileAlterationMonitor reprezentuje wątek, który tworzy wątek monitorujący wyzwalający każdy zarejestrowany FileAlterationObserver w określonym interwale.
Deklaracja klasy
Poniżej znajduje się deklaracja klasy org.apache.commons.io.monitor.FileAlterationMonitor -
public final class FileAlterationMonitor
extends Object implements Runnable
Przykład klasy FileAlterationMonitor
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileDeleteStrategy;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
public class IOTester {
public static void main(String[] args) {
try {
usingFileAlterationMonitor();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingFileAlterationMonitor() throws IOException {
//get the file object
File inputFile = FileUtils.getFile("input.txt");
String absolutePath = inputFile.getAbsolutePath();
String parent = absolutePath.substring(0,absolutePath.indexOf("input.txt"));
File parentDirectory = FileUtils.getFile(parent);
FileAlterationObserver observer = new
FileAlterationObserver(parentDirectory);
observer.addListener(new FileAlterationListenerAdaptor(){
@Override
public void onDirectoryCreate(File file) {
System.out.println("Folder created: " + file.getName());
}
@Override
public void onDirectoryDelete(File file) {
System.out.println("Folder deleted: " + file.getName());
}
@Override
public void onFileCreate(File file) {
System.out.println("File created: " + file.getName());
}
@Override
public void onFileDelete(File file) {
System.out.println("File deleted: " + file.getName());
}
});
//create a monitor to check changes after every 500 ms
FileAlterationMonitor monitor = new FileAlterationMonitor(500, observer);
try {
monitor.start();
//create a new directory
File newFolder = new File("test");
File newFile = new File("test1");
newFolder.mkdirs();
Thread.sleep(1000);
newFile.createNewFile();
Thread.sleep(1000);
FileDeleteStrategy.NORMAL.delete(newFolder);
Thread.sleep(1000);
FileDeleteStrategy.NORMAL.delete(newFile);
Thread.sleep(1000);
monitor.stop(10000);
} catch(IOException e) {
System.out.println(e.getMessage());
} catch(InterruptedException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Wynik
Zostanie wydrukowany następujący wynik.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
NameFileComparator porównuje nazwy dwóch plików. Może być używany do sortowania list lub tablic plików, używając ich nazw, z uwzględnieniem wielkości liter, bez uwzględniania wielkości liter lub zależnie od systemu.
Deklaracja klasy
Poniżej znajduje się deklaracja dla
org.apache.commons.io.comparator.NameFileComparator Klasa -
public class NameFileComparator
extends Object implements Serializable
Przykład klasy NameFileComparator
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
IOTester.java
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import org.apache.commons.io.IOCase;
import org.apache.commons.io.comparator.NameFileComparator;
import org.apache.commons.io.filefilter.FileFileFilter;
public class IOTester {
public static void main(String[] args) {
try {
usingNameFileComparator();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingNameFileComparator() throws IOException {
//get the current directory
File currentDirectory = new File(".");
NameFileComparator comparator = new
NameFileComparator(IOCase.INSENSITIVE);
File[] sortedFiles = comparator.sort(currentDirectory.listFiles((FileFilter)FileFileFilter.FILE));
System.out.println("Sorted By Name: ");
for(File file:sortedFiles) {
System.out.println(file.getName());
}
}
}
Wynik
Zostanie wydrukowany następujący wynik.
Sorted By Name:
.classpath
.project
input.txt
SizeFileComparator porównuje rozmiary dwóch plików / katalogu. Może być używany do sortowania list lub tablic plików według ich rozmiaru lub katalogów na podstawie liczby dzieci.
Deklaracja klasy
Poniżej znajduje się deklaracja dla
org.apache.commons.io.comparator.SizeFileComparator Klasa -
public class SizeFileComparator
extends Object implements Serializable
Przykład klasy SizeFileComparator
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
IOTester.java
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import org.apache.commons.io.comparator.SizeFileComparator;
import org.apache.commons.io.filefilter.FileFileFilter;
public class IOTester {
public static void main(String[] args) {
try {
usingSizeFileComparator();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingSizeFileComparator() throws IOException {
//get the current directory
File currentDirectory = new File(".");
SizeFileComparator comparator = new SizeFileComparator();
File[] sortedFiles = comparator.sort(currentDirectory.listFiles((FileFilter)FileFileFilter.FILE));
System.out.println("Sorted By Size: ");
for(File file:sortedFiles) {
System.out.println(file.getName() + ", size(kb) :" + file.length());
}
}
}
Wynik
Zostanie wydrukowany następujący wynik.
Sorted By Size:
input.txt, size:124
.project, size:382
.classpath, size:441
LastModifiedFileComparator porównuje daty ostatniej modyfikacji dwóch plików / katalogu. Może być używany do sortowania list lub tablic plików / katalogów według ich daty ostatniej modyfikacji.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.comparator.LastModifiedFileComparator Klasa -
public class LastModifiedFileComparator
extends Object implements Serializable
Przykład klasy LastModifiedFileComparator
Oto plik wejściowy, który musimy przeanalizować -
Welcome to TutorialsPoint. Simply Easy Learning.
IOTester.java
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Date;
import org.apache.commons.io.comparator.LastModifiedFileComparator;
import org.apache.commons.io.filefilter.FileFileFilter;
public class IOTester {
public static void main(String[] args) {
try {
usingLastModifiedFileComparator();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingLastModifiedFileComparator() throws IOException {
//get the current directory
File currentDirectory = new File(".");
LastModifiedFileComparator comparator = new LastModifiedFileComparator();
File[] sortedFiles = comparator.sort(currentDirectory.listFiles((FileFilter)FileFileFilter.FILE));
System.out.println("Sorted By Last Modified date: ");
for(File file:sortedFiles) {
System.out.println(file.getName() + ", Modified on: " + new Date(file.lastModified()));
}
}
}
Wynik
Zostanie wydrukowany następujący wynik.
Sorted By Last Modified date:
.project, Modified on: Thu Oct 12 19:06:45 IST 2017
.classpath, Modified on: Mon Nov 20 13:09:55 IST 2017
input.txt, Modified on: Mon Nov 20 19:27:55 IST 2017
Jest to proxy InputStream, które w sposób przezroczysty zapisuje kopię wszystkich bajtów, które są odczytywane ze strumienia proxy do danego OutputStream. Strumień wejściowy proxy jest zamykany, gdy wywoływana jest metoda close () na tym serwerze proxy. Może być używany do obsługi dwóch strumieni jednocześnie.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.input.TeeInputStream Klasa -
public class TeeInputStream
extends ProxyInputStream
Przykład klasy TeeInputStream
W tym przykładzie zamknięcie TeeInputStream powoduje zamknięcie TeeInputStream, a także obiektów TeeOutputStream.
IOTester.java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.commons.io.input.TeeInputStream;
import org.apache.commons.io.output.TeeOutputStream;
public class IOTester {
private static final String SAMPLE = "Welcome to TutorialsPoint. Simply Easy
Learning.";
public static void main(String[] args) {
try {
usingTeeInputStream();
}catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingTeeInputStream() throws IOException {
TeeInputStream teeInputStream = null;
TeeOutputStream teeOutputStream = null;
try {
ByteArrayInputStream inputStream = new
ByteArrayInputStream(SAMPLE.getBytes("US-ASCII"));
ByteArrayOutputStream outputStream1 = new ByteArrayOutputStream();
ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();
teeOutputStream = new TeeOutputStream(outputStream1, outputStream2);
teeInputStream = new TeeInputStream(inputStream, teeOutputStream, true);
teeInputStream.read(new byte[SAMPLE.length()]);
System.out.println("Output stream 1: " + outputStream1.toString());
System.out.println("Output stream 2: " + outputStream2.toString());
}catch (IOException e) {
System.out.println(e.getMessage());
} finally {
//teeIn.close() closes teeIn and teeOut which in turn closes the out1 and out2.
try {
teeInputStream.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
}
Wynik
Zostanie wydrukowany następujący wynik.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.
TeeOutputStream dzieli OutputStream. Jej nazwa pochodzi od polecenia unix „tee”. Umożliwia rozgałęzienie strumienia na dwa strumienie.
Deklaracja klasy
Poniżej znajduje się deklaracja dla org.apache.commons.io.output.TeeOutputStream Klasa -
public class TeeOutputStream
extends ProxyOutputStream
Przykład klasy TeeOutputStream
W tym przykładzie TeeOutputStream przyjmuje dwa strumienie wyjściowe jako parametr i przekazuje dane do zestawu danych TeeOutputStream do obu strumieni wyjściowych.
IOTester.java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.commons.io.input.TeeInputStream;
import org.apache.commons.io.output.TeeOutputStream;
public class IOTester {
private static final String SAMPLE = "Welcome to TutorialsPoint. Simply Easy
Learning.";
public static void main(String[] args) {
try {
usingTeeInputStream();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingTeeInputStream() throws IOException {
TeeInputStream teeInputStream = null;
TeeOutputStream teeOutputStream = null;
try {
ByteArrayInputStream inputStream = new
ByteArrayInputStream(SAMPLE.getBytes("US-ASCII"));
ByteArrayOutputStream outputStream1 = new ByteArrayOutputStream();
ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();
teeOutputStream = new TeeOutputStream(outputStream1, outputStream2);
teeInputStream = new TeeInputStream(inputStream, teeOutputStream, true);
teeInputStream.read(new byte[SAMPLE.length()]);
System.out.println("Output stream 1: " + outputStream1.toString());
System.out.println("Output stream 2: " + outputStream2.toString());
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
//teeIn.close() closes teeIn and teeOut which in turn closes the out1 and out2.
try {
teeInputStream.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
}
Wynik
Zostanie wydrukowany następujący wynik.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.