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()); } } } }
Выход
Будет напечатан следующий результат.