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 ObjectFunkcje 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 ObjectFunkcje 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 ObjectFunkcje 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.xmlFileSystemUtils 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 ObjectPrzykł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 kbWyliczenie 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 SerializablePrzykł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): trueLineIterator 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>, CloseablePrzykł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 SerializablePrzykł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.txtWildcardFileFilter 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 SerializablePrzykł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.txtSuffixFileFilter 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 SerializablePrzykł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.txtPrefixFileFilter 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 SerializablePrzykł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.txtOrFileFilter 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, SerializablePrzykł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.txtAndFileFilter 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, SerializablePrzykł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
.projectFileEntry 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 SerializableFunkcje 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: falseFileAlterationObserver 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 SerializablePrzykł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: test1FileAlterationMonitor 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 RunnablePrzykł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: test1NameFileComparator 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 SerializablePrzykł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.txtSizeFileComparator 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 SerializablePrzykł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:441LastModifiedFileComparator 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 SerializablePrzykł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 2017Jest 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 ProxyInputStreamPrzykł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 ProxyOutputStreamPrzykł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.