Учебники

Apache Commons IO — Краткое руководство

Apache Commons IO — Обзор

Библиотека Apache Commons IO предоставляет различные служебные классы для общих операций для File IO, охватывающие широкий спектр вариантов использования. Это помогает избежать написания стандартного кода. Библиотека Apache Commons IO предоставляет классы для следующих категорий:

  • Служебные классы — эти классы в пакете org.apache.commons.io обеспечивают сравнение файлов и строк. Ниже приведены некоторые примеры.

    • IOUtils — предоставляет служебные методы для чтения, записи и копирования файлов. Метод работает с InputStream, OutputStream, Reader и Writer.

    • FilenameUtils — Предоставляет метод для работы с именами файлов без использования File Object. Он работает на разных операционных системах одинаково.

    • FileUtils — предоставляет метод для манипулирования файлами, например, перемещения, открытия, проверки существования, чтения файла и т. Д. В этих методах используется объект File.

    • IOCase — Предоставляет метод для работы со строками и сравнения.

    • FileSystemUtils — Предоставляет метод для получения свободного места на диске.

    • LineIterator — предоставляет гибкий способ работы с линейным файлом.

  • Классы фильтрации. Классы фильтрации в пакете org.apache.commons.io.filefilter предоставляют методы для фильтрации файлов на основе логических критериев вместо утомительных сравнений на основе строк. Ниже приведены некоторые примеры.

    • NameFileFilter — Фильтрует имена файлов для имени.

    • WildcardFileFilter — Фильтрует файлы, используя предоставленные шаблоны.

    • SuffixFileFilter — Фильтрует файлы на основе суффикса. Это используется при получении всех файлов определенного типа.

    • PrefixFileFilter — Фильтрует файлы по префиксу.

    • OrFileFilter — Предоставляет условную логику ИЛИ в списке файловых фильтров. Возвращает true, если какие-либо фильтры в списке возвращают true. В противном случае возвращается false.

    • AndFileFilter — обеспечивает условную и логику в списке файловых фильтров. Возвращает false, если какие-либо фильтры в списке возвращают false. В противном случае он возвращает истину.

  • Классы File Monitorклассы File Monitor в пакете org.apache.commons.io.monitor обеспечивают контроль для отслеживания изменений в конкретном файле или папке и позволяют соответствующим образом выполнять действия над изменениями. Ниже приведены некоторые примеры.

    • FileEntry — Предоставляет состояние файла или каталога, атрибуты файла в определенный момент времени.

    • FileAlterationObserver — представляет состояние файлов в корневом каталоге, проверяет файловую систему и уведомляет слушателей о событиях создания, изменения или удаления.

    • FileAlterationMonitor — представляет поток, который порождает поток мониторинга, запускающий любой зарегистрированный FileAlterationObserver через указанный интервал.

  • Классы компаратораклассы файлового монитора в пакете org.apache.commons.io.comparator позволяют легко сравнивать и сортировать файлы и каталоги.

    • NameFileComparator — Сравните имена двух файлов.

    • SizeFileComparator — Сравните размер двух файлов.

    • LastModifiedFileComparator — Сравните даты последнего изменения двух файлов.

  • Потоковые классы. Существует несколько реализаций InputStream в пакете org.apache.commons.io.input и OutputStream в пакете org.apache.commons.io.output для выполнения полезных задач в потоках. Ниже приведены некоторые примеры.

    • NullOutputStream — поглощает все данные, отправленные с любой ошибкой.

    • TeeOutputStream — отправляет вывод в два потока.

    • ByteArrayOutputStream — более быстрая версия класса JDK.

    • CountingOutputStreamподсчитывает количество байтов, прошедших через поток.

    • CountingOutputStreamподсчитывает количество байтов, прошедших через поток.

    • ProxyOutputStream — изменяет вызовы для проксируемого потока.

    • LockableFileWriter — FileWriter для создания файлов блокировки и обеспечения простой обработки блокировки файлов между потоками.

Служебные классы — эти классы в пакете org.apache.commons.io обеспечивают сравнение файлов и строк. Ниже приведены некоторые примеры.

IOUtils — предоставляет служебные методы для чтения, записи и копирования файлов. Метод работает с InputStream, OutputStream, Reader и Writer.

FilenameUtils — Предоставляет метод для работы с именами файлов без использования File Object. Он работает на разных операционных системах одинаково.

FileUtils — предоставляет метод для манипулирования файлами, например, перемещения, открытия, проверки существования, чтения файла и т. Д. В этих методах используется объект File.

IOCase — Предоставляет метод для работы со строками и сравнения.

FileSystemUtils — Предоставляет метод для получения свободного места на диске.

LineIterator — предоставляет гибкий способ работы с линейным файлом.

Классы фильтрации. Классы фильтрации в пакете org.apache.commons.io.filefilter предоставляют методы для фильтрации файлов на основе логических критериев вместо утомительных сравнений на основе строк. Ниже приведены некоторые примеры.

NameFileFilter — Фильтрует имена файлов для имени.

WildcardFileFilter — Фильтрует файлы, используя предоставленные шаблоны.

SuffixFileFilter — Фильтрует файлы на основе суффикса. Это используется при получении всех файлов определенного типа.

PrefixFileFilter — Фильтрует файлы по префиксу.

OrFileFilter — Предоставляет условную логику ИЛИ в списке файловых фильтров. Возвращает true, если какие-либо фильтры в списке возвращают true. В противном случае возвращается false.

AndFileFilter — обеспечивает условную и логику в списке файловых фильтров. Возвращает false, если какие-либо фильтры в списке возвращают false. В противном случае он возвращает истину.

Классы File Monitorклассы File Monitor в пакете org.apache.commons.io.monitor обеспечивают контроль для отслеживания изменений в конкретном файле или папке и позволяют соответствующим образом выполнять действия над изменениями. Ниже приведены некоторые примеры.

FileEntry — Предоставляет состояние файла или каталога, атрибуты файла в определенный момент времени.

FileAlterationObserver — представляет состояние файлов в корневом каталоге, проверяет файловую систему и уведомляет слушателей о событиях создания, изменения или удаления.

FileAlterationMonitor — представляет поток, который порождает поток мониторинга, запускающий любой зарегистрированный FileAlterationObserver через указанный интервал.

Классы компаратораклассы файлового монитора в пакете org.apache.commons.io.comparator позволяют легко сравнивать и сортировать файлы и каталоги.

NameFileComparator — Сравните имена двух файлов.

SizeFileComparator — Сравните размер двух файлов.

LastModifiedFileComparator — Сравните даты последнего изменения двух файлов.

Потоковые классы. Существует несколько реализаций InputStream в пакете org.apache.commons.io.input и OutputStream в пакете org.apache.commons.io.output для выполнения полезных задач в потоках. Ниже приведены некоторые примеры.

NullOutputStream — поглощает все данные, отправленные с любой ошибкой.

TeeOutputStream — отправляет вывод в два потока.

ByteArrayOutputStream — более быстрая версия класса JDK.

CountingOutputStreamподсчитывает количество байтов, прошедших через поток.

CountingOutputStreamподсчитывает количество байтов, прошедших через поток.

ProxyOutputStream — изменяет вызовы для проксируемого потока.

LockableFileWriter — FileWriter для создания файлов блокировки и обеспечения простой обработки блокировки файлов между потоками.

Apache Commons IO — настройка среды

Настройка локальной среды

Если вы все еще хотите настроить свою среду для языка программирования Java, то в этом разделе вы узнаете, как загрузить и настроить Java на вашем компьютере. Пожалуйста, следуйте инструкциям ниже, чтобы настроить среду.

Java SE находится в свободном доступе по ссылке Скачать Java . Таким образом, вы загружаете версию, основанную на вашей операционной системе.

Следуйте инструкциям для загрузки Java и запуска .exe для установки Java на вашем компьютере. После того, как вы установили Java на свой компьютер, вам нужно будет установить переменные окружения, чтобы они указывали на правильные каталоги установки —

Настройка пути для Windows 2000 / XP

Мы предполагаем, что вы установили Java в каталог c: \ Program Files \ java \ jdk

  • Щелкните правой кнопкой мыши «Мой компьютер» и выберите «Свойства».

  • Нажмите кнопку «Переменные среды» на вкладке «Дополнительно».

  • Теперь измените переменную Path, чтобы она также содержала путь к исполняемому файлу Java. Например, если в настоящий момент путь задан как «C: \ WINDOWS \ SYSTEM32», измените ваш путь на «C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin».

Щелкните правой кнопкой мыши «Мой компьютер» и выберите «Свойства».

Нажмите кнопку «Переменные среды» на вкладке «Дополнительно».

Теперь измените переменную Path, чтобы она также содержала путь к исполняемому файлу Java. Например, если в настоящий момент путь задан как «C: \ WINDOWS \ SYSTEM32», измените ваш путь на «C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin».

Настройка пути для Windows 95/98 / ME

Мы предполагаем, что вы установили Java в каталог c: \ Program Files \ java \ jdk

  • Отредактируйте файл «C: \ autoexec.bat» и добавьте в конце следующую строку: «SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin»

Отредактируйте файл «C: \ autoexec.bat» и добавьте в конце следующую строку: «SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin»

Настройка пути для Linux, UNIX, Solaris, FreeBSD

Переменная среды PATH должна указывать на то, где установлены двоичные файлы Java. Обратитесь к документации по вашей оболочке, если у вас возникли проблемы с этим.

Например, если вы используете bash в качестве оболочки, вы добавили бы следующую строку в конец вашего .bashrc: export PATH = / path / to / java: $ PATH ‘

Популярные редакторы Java

Для написания ваших программ на Java вам нужен текстовый редактор. Есть много сложных IDE, доступных на рынке. Но сейчас вы можете рассмотреть один из следующих —

  • Блокнот — на компьютере с Windows вы можете использовать любой простой текстовый редактор, например Блокнот (рекомендуется для этого урока), TextPad.

  • Netbeans — это Java IDE с открытым исходным кодом, который можно загрузить по адресу https://www.netbeans.org/index.html .

  • Eclipse — это также Java IDE, разработанная сообществом открытого исходного кода eclipse, которую можно скачать по адресу https://www.eclipse.org/ .

Блокнот — на компьютере с Windows вы можете использовать любой простой текстовый редактор, например Блокнот (рекомендуется для этого урока), TextPad.

Netbeans — это Java IDE с открытым исходным кодом, который можно загрузить по адресу https://www.netbeans.org/index.html .

Eclipse — это также Java IDE, разработанная сообществом открытого исходного кода eclipse, которую можно скачать по адресу https://www.eclipse.org/ .

Скачать Common IO Archive

Загрузите последнюю версию jar-файла Apache Common IO с commons-io-2.6-bin.zip . На момент написания этого руководства мы загрузили файл commons-io-2.6-bin.zip и скопировали его в папку C: \> Apache.

Операционные системы Название архива
Windows commons-io-2.6-bin.zip
Linux Обще-IO-2,6-bin.tar.gz
макинтош Обще-IO-2,6-bin.tar.gz

Установить Apache Common IO Environment

Установите переменную окружения APACHE_HOME, чтобы она указывала на местоположение базовой директории, где на вашем компьютере хранится jar-файл Apache. Предполагается, что мы извлекли файл commons-io-2.6-bin.zip в папку Apache в различных операционных системах следующим образом.

Операционные системы Выход
Windows Установите переменную окружения APACHE_HOME в C: \ Apache
Linux экспорт APACHE_HOME = / usr / local / Apache
макинтош экспорт APACHE_HOME = / Библиотека / Apache

Установить переменную CLASSPATH

Задайте переменную среды CLASSPATH, чтобы она указывала на расположение JAR Common IO. Предполагая, что вы сохранили commons-io-2.6-bin.zip в папке Apache в различных операционных системах следующим образом.

Операционные системы Выход
Windows Задайте для переменной среды CLASSPATH значение% CLASSPATH%;% APACHE_HOME% \ commons-io-2.6.jar;.;
Linux export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar :.
макинтош export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar :.

Apache Commons IO — IOUtils

Предоставляет служебные методы для чтения, записи и копирования файлов. Метод работает с InputStream, OutputStream, Reader и Writer.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.IOUtils.

public class IOUtils
   extends Object

Характеристики

  • Предоставляет статические служебные методы для операций ввода / вывода.
  • toXXX () — читает данные из потока.
  • write () — записать данные в поток.
  • copy () — копировать все данные в поток в другой поток.
  • contentEquals — сравнить содержимое двух потоков.

Пример класса IOUtils

Вот входной файл, который нам нужно проанализировать —

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") );
      }
   }
}

Выход

Будет напечатан следующий результат.

Welcome to TutorialsPoint. Simply Easy Learning.
Welcome to TutorialsPoint. Simply Easy Learning.

Apache Commons IO — FileUtils

Предоставляет метод для манипулирования файлами, такой как перемещение, открытие, проверка существования, чтение файла и т. Д. Эти методы используют File Object.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.FileUtils.

public class FileUtils
   extends Object

Характеристики

  • Методы записи в файл.
  • Методы для чтения из файла.
  • Методы создания каталога, включая родительские каталоги.
  • Методы копирования файлов и каталогов.
  • Методы удаления файлов и каталогов.
  • Методы для преобразования в и из URL.
  • Методы для вывода списка файлов и каталогов по фильтрам и расширениям.
  • Методы для сравнения содержимого файла.
  • Методы для регистрации даты последнего изменения.
  • Методы расчета контрольной суммы.

Пример класса FileUtils

Вот входной файл, который нам нужно проанализировать —

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);
   }
}

Выход

Будет напечатан следующий результат.

Temp
Welcome to TutorialsPoint. Simply Easy Learning.

Apache Commons IO — FilenameUtils

Предоставляет метод для работы с именами файлов без использования File Object. Он работает на разных операционных системах одинаково. Этот класс решает проблемы при переходе с машины для разработки на базе Windows на рабочую машину на основе Unix.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.FilenameUtils.

public class FilenameUtils
   extends Object

Характеристики

Этот класс определяет шесть компонентов в имени файла. Рассмотрим пример расположения как C: \ dev \ project \ file.txt . Тогда компоненты —

  • Префикс — C: \
  • Относительный путь — dev \ project \
  • Абсолютный путь — C: \ dev \ project \
  • Имя — file.txt
  • Базовое имя — файл
  • Расширение — TXT

Чтобы определить каталог, добавьте разделитель к имени файла.

Пример класса FilenameUtils

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));
   }
}

Выход

Будет напечатан следующий результат.

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

Apache Commons IO — FileSystemUtils

Предоставляет метод для получения свободного места на диске.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.FileSystemUtils.

public class FileSystemUtils
   extends Object

Пример класса 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());
      }
   }
}

Выход

Будет напечатан следующий результат.

Free Space 61355640 kb

Apache Commons IO — IOCase

Перечисление чувствительности к регистру ввода-вывода. Различные операционные системы имеют разные правила учета регистра для имен файлов. Например, Windows не учитывает регистр имен файлов, тогда как Unix учитывает регистр. IOCase фиксирует это различие, предоставляет перечисление для контроля того, как должны выполняться сравнения имен файлов. Он также предоставляет методы для использования перечисления для сравнения.

Enum Декларация

Ниже приведена декларация для org.apache.commons.io.IOCase Enum —

public enum IOCase
   extends Enum<IOCase> implements Serializable

Пример перечисления IOCase

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));
   }
}

Выход

Будет напечатан следующий результат.

Ends with Learning (case sensitive): false
Ends with Learning (case insensitive): true
Equality Check  (case sensitive): false
Equality Check  (case insensitive): true

Apache Commons IO — LineIterator

Предоставляет гибкий способ работы с линейным файлом.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.LineIterator.

public class LineIterator
   extends Object implements Iterator<String>, Closeable

Пример класса LineIterator

Вот входной файл, который нам нужно проанализировать —

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());
         }
      }
   }
}

Выход

Будет напечатан следующий результат.

Contents of input.txt
Welcome to TutorialsPoint. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.

Apache Commons IO — NameFileFilter

Фильтрует имена файлов для имени.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.filefilter.NameFileFilter.

public class NameFileFilter
   extends AbstractFileFilter implements Serializable

Пример класса NameFileFilter

Вот входной файл, который нам нужно проанализировать —

Welcome to TutorialsPoint. Simply Easy Learning.

Давайте распечатаем все файлы и каталоги в текущем каталоге, а затем отфильтруем файл с именем 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]);
      }
   }
}

Выход

Будет напечатан следующий результат.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File with name input.txt

input.txt

Apache Commons IO — WildcardFileFilter

Фильтрует файлы, используя предоставленные шаблоны.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.filefilter.WildcardFileFilter.

public class WildcardFileFilter
   extends AbstractFileFilter implements Serializable

Пример класса WildcardFileFilter

Вот входной файл, который нам нужно проанализировать —

Welcome to TutorialsPoint. Simply Easy Learning.

Давайте распечатаем все файлы и каталоги в текущем каталоге, а затем отфильтруем файл, имя которого заканчивается на 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]);
      }
   }
}

Выход

Будет напечатан следующий результат.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File name ending with t

.project
input.txt

Apache Commons IO — SuffixFileFilter

Фильтрует файлы на основе суффикса. Это используется при получении всех файлов определенного типа.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.filefilter.SuffixFileFilter.

public class SuffixFileFilter
   extends AbstractFileFilter implements Serializable

Пример класса SuffixFileFilter

Вот входной файл, который нам нужно проанализировать —

Welcome to TutorialsPoint. Simply Easy Learning.

Давайте распечатаем все файлы и каталоги в текущем каталоге, а затем отфильтруем файл с расширением 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]);
      }
   }
}

Выход

Будет напечатан следующий результат.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File with extenstion txt

input.txt

Apache Commons IO — PrefixFileFilter

Фильтрует файлы по префиксу.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.filefilter.PrefixFileFilter.

public class PrefixFileFilter
   extends AbstractFileFilter implements Serializable

Пример класса PrefixFileFilter

Вот входной файл, который нам нужно проанализировать —

Welcome to TutorialsPoint. Simply Easy Learning.

Давайте распечатаем все файлы и каталоги в текущем каталоге, а затем отфильтруем файл с именем, начинающимся с ввода.

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]);
      }
   }
}

Выход

Будет напечатан следующий результат.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File with extenstion txt

input.txt

Apache Commons IO — OrFileFilter

Предоставляет условную логику ИЛИ в списке файловых фильтров. Возвращает true, если какие-либо фильтры в списке возвращают true. В противном случае возвращается false.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.filefilter.OrFileFilter.

public class OrFileFilter
   extends AbstractFileFilter implements ConditionalFileFilter, Serializable

Пример класса OrFileFilter

Вот входной файл, который нам нужно проанализировать —

Welcome to TutorialsPoint. Simply Easy Learning.

Давайте распечатаем все файлы и каталоги в текущем каталоге, а затем отфильтруем файл с именем, начинающимся с. или заканчивается т.

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]);
      }
   }
}

Выход

Будет напечатан следующий результат.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File starting with . or ends with t

.classpath
.project
.settings
input.txt

Apache Commons IO — AndFileFilter

Обеспечивает условную и логику в списке файловых фильтров. Возвращает true, если все фильтры в списке возвращают true. В противном случае возвращается false.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.filefilter.AndFileFilter.

public class AndFileFilter
   extends AbstractFileFilter implements ConditionalFileFilter, Serializable

Пример класса AndFileFilter

Вот входной файл, который нам нужно проанализировать —

Welcome to TutorialsPoint. Simply Easy Learning.

Давайте распечатаем все файлы и каталоги в текущем каталоге, а затем отфильтруем файл с именем, начинающимся с. и заканчивается т.

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]);
      }
   }
}

Выход

Будет напечатан следующий результат.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File starting with . or ends with t

.project

Apache Commons IO — FileEntry

Предоставляет состояние файла или каталога, атрибуты файла в определенный момент времени.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.monitor.FileEntry.

public class FileEntry
   extends Object implements Serializable

Характеристики

Объект класса FileEntry предоставляет следующие атрибуты файла в определенный момент времени.

  • getName () — имя файла.
  • exist () — проверяет, существует ли файл или нет.
  • isDirectory () — проверяет, является ли файл каталогом.
  • lastModified () — дает время последнего изменения даты.
  • listFiles () — выдает содержимое каталога.

Пример класса FileEntry

Вот входной файл, который нам нужно проанализировать —

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());
   }
}

Выход

Будет напечатан следующий результат.

Monitored File: input.txt
File name: input.txt
Is Directory: false

Commons IO — FileAlterationObserver

Представляет состояние файлов в корневом каталоге, проверяет файловую систему и уведомляет слушателей о событиях создания, изменения или удаления.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.monitor.FileAlterationObserver.

public class FileAlterationObserver
   extends Object implements Serializable

Пример класса FileAlterationObserver

Вот входной файл, который нам нужно проанализировать —

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) {
            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());
      }
   }
}

Выход

Будет напечатан следующий результат.

Folder created: test
File created: test1
Folder deleted: test
File deleted: test1

Apache Commons IO — FileAlterationMonitor

Представляет поток, который порождает поток мониторинга, запускающий любой зарегистрированный FileAlterationObserver с заданным интервалом.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.monitor.FileAlterationMonitor

public final class FileAlterationMonitor
   extends Object implements Runnable

Пример класса FileAlterationMonitor

Вот входной файл, который нам нужно проанализировать —

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());
      }
   }
}

Выход

Будет напечатан следующий результат.

Folder created: test
File created: test1
Folder deleted: test
File deleted: test1

Apache Commons IO — NameFileComparator

Сравните имена двух файлов. NameFileComparator может использоваться для сортировки списков или массивов файлов по их имени либо с учетом регистра, без учета регистра или с учетом регистра.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.comparator.NameFileComparator.

public class NameFileComparator
   extends Object implements Serializable

Пример класса NameFileComparator

Вот входной файл, который нам нужно проанализировать —

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());
      }
   }
}

Выход

Будет напечатан следующий результат.

Sorted By Name: 
.classpath
.project
input.txt

Apache Commons IO — SizeFileComparator

Сравните размеры двух файлов / каталогов. SizeFileComparator может использоваться для сортировки списков или массивов файлов, используя их размер или каталоги на основе их номера. детей.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.comparator.SizeFileComparator.

public class SizeFileComparator
   extends Object implements Serializable

Пример класса SizeFileComparator

Вот входной файл, который нам нужно проанализировать —

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());
      }
   }
}

Выход

Будет напечатан следующий результат.

Sorted By Size: 
input.txt, size:124
.project, size:382
.classpath, size:441

Commons IO — LastModifiedFileComparator

Сравните даты последнего изменения двух файлов / каталогов. LastModifiedFileComparator может использоваться для сортировки списков или массивов файлов / каталогов, используя даты их последнего изменения.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.comparator.LastModifiedFileComparator.

public class LastModifiedFileComparator
   extends Object implements Serializable

Пример класса LastModifiedFileComparator

Вот входной файл, который нам нужно проанализировать —

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()));
      }
   }
}

Выход

Будет напечатан следующий результат.

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

Apache Commons IO — TeeInputStream

Это прокси InputStream, который прозрачно записывает копию всех байтов, прочитанных из проксируемого потока, в данный OutputStream. Прокси-входной поток закрывается при вызове метода close () на этом прокси. Он может использоваться для одновременного управления двумя потоками.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.input.TeeInputStream.

public class TeeInputStream
   extends ProxyInputStream

Пример класса TeeInputStream

В этом примере закрытие TeeInputStream закрывает TeeInputStream, а также объекты 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());
         }
      }
   }
}

Выход

Будет напечатан следующий результат.

Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.

Apache Commons IO — TeeOutputStream

TeeOutputStream разбивает OutputStream. Он назван в честь команды unix ‘tee’. Это позволяет разветвлять поток двум потокам.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.output.TeeOutputStream.

public class TeeOutputStream
   extends ProxyOutputStream

Пример класса TeeOutputStream

В этом примере TeeOutputStream принимает два выходных потока в качестве параметра и передает данные в 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());
         }
      }
   }
}

Выход

Будет напечатан следующий результат.