Apache Commons IO - Panduan Cepat
Pustaka Apache Commons IO menyediakan berbagai kelas utilitas untuk operasi umum untuk File IO yang mencakup berbagai kasus penggunaan. Ini membantu menghindari penulisan kode boilerplate.
Perpustakaan Apache Commons IO menyediakan kelas untuk kategori berikut -
Kelas utilitas
Kelas-kelas ini yang berada di bawah org.apache.commons.iopaket, menyediakan perbandingan file dan string. Berikut adalah beberapa contohnya.
IOUtils- Menyediakan metode utilitas untuk membaca, menulis dan menyalin file. Metode ini bekerja dengan InputStream, OutputStream, Reader dan Writer.
FilenameUtils- Menyediakan metode untuk bekerja dengan nama file tanpa menggunakan Objek File. Ia bekerja pada sistem operasi yang berbeda dengan cara yang sama.
FileUtils - Menyediakan metode untuk memanipulasi file seperti memindahkan, membuka, memeriksa keberadaan, membaca file, dll. Metode ini menggunakan Objek File.
IOCase - Menyediakan metode untuk manipulasi dan perbandingan string.
FileSystemUtils - Menyediakan metode untuk mendapatkan ruang kosong pada drive disk.
LineIterator - Menyediakan cara yang fleksibel untuk bekerja dengan file berbasis baris.
Filter kelas
Kelas filter yang berada di bawah paket org.apache.commons.io.filefilter, menyediakan metode untuk memfilter file berdasarkan kriteria logis alih-alih perbandingan membosankan berbasis string. Berikut adalah beberapa contohnya.
NameFileFilter - Memfilter nama file untuk sebuah nama.
WildcardFileFilter - Memfilter file menggunakan wildcard yang disediakan.
SuffixFileFilter- Memfilter file berdasarkan sufiks. Ini digunakan untuk mengambil semua file dari tipe tertentu.
PrefixFileFilter - Memfilter file berdasarkan awalan.
OrFileFilter- Menyediakan logika OR bersyarat di seluruh daftar filter file. Mengembalikan nilai benar, jika ada filter dalam daftar yang mengembalikan nilai benar. Jika tidak, itu mengembalikan false.
AndFileFilter- Menyediakan kondisional dan logika di seluruh daftar filter file. Mengembalikan nilai salah jika ada filter dalam daftar yang mengembalikan nilai salah. Jika tidak, itu mengembalikan nilai true.
Kelas Monitor File
Kelas monitor file yang berada di bawah org.apache.commons.io.monitorpaket, memberikan kontrol untuk melacak perubahan dalam file atau folder tertentu dan memungkinkan untuk melakukan tindakan yang sesuai dengan perubahan tersebut. Berikut adalah beberapa contohnya.
FileEntry- Memberikan status file atau direktori. Atribut file pada suatu titik waktu.
FileAlterationObserver - Mewakili status file di bawah direktori root, memeriksa sistem file dan memberi tahu pendengar tentang membuat, mengubah, atau menghapus acara.
FileAlterationMonitor - Merepresentasikan utas yang memunculkan utas pemantauan yang memicu FileAlterationObserver terdaftar apa pun pada interval tertentu.
Kelas pembanding
Kelas monitor file di bawah org.apache.commons.io.comparator paket memungkinkan untuk membandingkan dan mengurutkan file dan direktori dengan mudah.
NameFileComparator - Bandingkan nama dua file.
SizeFileComparator - Bandingkan ukuran dua file.
LastModifiedFileComparator - Bandingkan tanggal modifikasi terakhir dari dua file.
Kelas aliran
Ada beberapa implementasi InputStream di bawah paket org.apache.commons.io.input dan OutputStream di bawah paket org.apache.commons.io.output, untuk melakukan tugas-tugas yang berguna di aliran. Berikut adalah beberapa contohnya.
NullOutputStream - Menyerap semua data yang dikirim dengan kesalahan apa pun.
TeeOutputStream - Mengirim keluaran ke dua aliran.
ByteArrayOutputStream - Versi kelas JDK yang lebih cepat.
CountingOutputStream - Menghitung jumlah byte yang melewati aliran.
ProxyOutputStream - Mengubah panggilan ke aliran proxy.
LockableFileWriter - FileWriter untuk membuat file kunci dan memungkinkan penanganan kunci file lintas utas sederhana.
Dalam bab ini, kita akan belajar tentang pengaturan lingkungan lokal dari Apache Commons IO dan cara mengatur jalur Commons IO untuk Windows 2000 / XP, Windows 95/98 / ME dll. Kita juga akan memahami tentang beberapa editor java populer dan cara mengunduh arsip Commons IO.
Pengaturan Lingkungan Lokal
Jika Anda masih ingin mengatur lingkungan Anda untuk bahasa pemrograman Java, maka bagian ini akan memandu Anda, tentang cara mengunduh dan mengatur Java di komputer Anda. Harap ikuti langkah-langkah yang disebutkan di bawah ini untuk menyiapkan lingkungan.
Java SE tersedia secara gratis untuk diunduh di tautan https://www.oracle.comJadi, Anda mengunduh versi berdasarkan sistem operasi Anda.
Ikuti petunjuk untuk mengunduh Java dan menjalankan .exeuntuk menginstal Java di komputer Anda. Setelah Anda menginstal Java di komputer Anda, Anda perlu mengatur variabel lingkungan agar mengarah ke direktori instalasi yang benar.
Path untuk Windows 2000 / XP
Mari kita pahami, cara mengatur jalur untuk Windows 2000 / XP. Kami berasumsi bahwa Anda telah menginstal Java dic:\Program Files\java\jdk direktori.
Klik kanan pada 'My Computer' dan pilih 'Properties'.
Klik tombol 'Variabel lingkungan' di bawah tab 'Lanjutan'.
Sekarang, ubah variabel 'Path', sehingga, itu juga berisi path ke Java yang dapat dieksekusi. Contoh, jika jalur saat ini disetel ke 'C: \ WINDOWS \ SYSTEM32', lalu ubah jalur Anda untuk membaca'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.
Path untuk Windows 95/98 / ME
Mari kita pahami, cara mengatur jalur untuk Windows 95/98 / ME. Kami berasumsi bahwa Anda telah menginstal Java dic:\Program Files\java\jdk direktori.
Edit file 'C: \ autoexec.bat' dan tambahkan baris berikut di bagian akhir - 'SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin'
Path untuk Linux, UNIX, Solaris, FreeBSD
Variabel lingkungan PATH harus disetel ke titik di mana, binari Java telah dipasang. Lihat dokumentasi shell Anda, jika Anda kesulitan melakukan ini.
Contoh, jika Anda menggunakan bash sebagai shell Anda, maka Anda akan menambahkan baris berikut di akhir '.bashrc: export PATH = / path / to / java: $ PATH'
Editor Java Populer
Untuk menulis program Java Anda, Anda membutuhkan editor teks. Ada banyak IDE canggih yang tersedia di pasaran. Tetapi untuk saat ini, Anda dapat mempertimbangkan salah satu dari yang berikut -
Notepad - Pada mesin Windows Anda dapat menggunakan editor teks sederhana seperti Notepad (Disarankan untuk tutorial ini), TextPad.
Netbeans - Ini adalah IDE Java yang open-source dan gratis dan dapat diunduh dari https://www.netbeans.org/index.html.
Eclipse - Ini juga merupakan Java IDE yang dikembangkan oleh komunitas open-source eclipse dan dapat diunduh dari https://www.eclipse.org/.
Unduh Arsip IO Umum
Unduh versi terbaru file jar Apache Common IO dari commons-io-2.6- bin.zip, yang tersedia di download_io.cgi Pada saat menulis tutorial ini, kami telah mengunduh commons-io-2.6-bin.zip dan menyalinnya ke folder C: \> Apache.
OS | Nama arsip |
---|---|
Windows | commons-io-2.6-bin.zip |
Linux | commons-io-2.6-bin.tar.gz |
Mac | commons-io-2.6-bin.tar.gz |
Apache Common IO Environment
Mengatur APACHE_HOMEvariabel lingkungan untuk menunjuk ke lokasi direktori dasar di mana, jar Apache disimpan di komputer Anda. Dengan asumsi, kami telah mengekstrak commons-io-2.6-bin.zip di folder Apache pada berbagai Sistem Operasi sebagai berikut.
OS | Keluaran |
---|---|
Windows | Setel variabel lingkungan APACHE_HOME ke C: \ Apache |
Linux | ekspor APACHE_HOME = / usr / local / Apache |
Mac | ekspor APACHE_HOME = / Library / Apache |
Setel Variabel CLASSPATH
Mengatur CLASSPATHvariabel lingkungan untuk menunjuk ke lokasi jar Common IO. Dengan asumsi, Anda telah menyimpan commons-io-2.6-bin.zip di folder Apache pada berbagai Sistem Operasi sebagai berikut.
OS | Keluaran |
---|---|
Windows | Setel variabel lingkungan CLASSPATH ke% CLASSPATH%;% APACHE_HOME% \ commons-io-2.6.jar;.; |
Linux | ekspor CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar :. |
Mac | ekspor CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar :. |
IOUtils menyediakan metode utilitas untuk membaca, menulis, dan menyalin file. Metode ini bekerja dengan InputStream, OutputStream, Reader dan Writer.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.IOUtils Kelas -
public class IOUtils
extends Object
Fitur IOUtils
Fitur IOUtils diberikan di bawah ini -
Menyediakan metode utilitas statis untuk operasi input / output.
toXXX () - membaca data dari aliran.
write () - menulis data ke aliran.
copy () - menyalin semua data ke aliran ke aliran lain.
contentEquals - bandingkan konten dari dua aliran.
Contoh Kelas IOUtils
Berikut adalah file input yang perlu kita parse -
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") );
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut -
Welcome to TutorialsPoint. Simply Easy Learning.
Welcome to TutorialsPoint. Simply Easy Learning.
FileUtils menyediakan metode untuk memanipulasi file seperti memindahkan, membuka, memeriksa keberadaan, membaca file, dll. Metode ini menggunakan Objek File.
Deklarasi Kelas
Berikut adalah deklarasi untuk kelas org.apache.commons.io.FileUtils -
public class FileUtils
extends Object
Fitur FileUtils
Fitur FileUtils disebutkan di bawah ini -
Metode untuk menulis ke file.
Metode untuk membaca dari file.
Metode untuk membuat direktori termasuk direktori induk.
Metode untuk menyalin file dan direktori.
Metode untuk menghapus file dan direktori.
Metode untuk mengonversi ke dan dari URL.
Metode untuk membuat daftar file dan direktori dengan filter dan ekstensi.
Metode untuk membandingkan konten file.
Metode untuk mengajukan tanggal terakhir diubah.
Metode untuk menghitung checksum.
Contoh Kelas FileUtils
Berikut adalah file input yang perlu kita parse -
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);
}
}
Keluaran
Outputnya disebutkan di bawah ini -
Temp
Welcome to TutorialsPoint. Simply Easy Learning.
FilenameUtils menyediakan metode untuk bekerja dengan nama file tanpa menggunakan Objek File. Ia bekerja pada sistem operasi yang berbeda dengan cara yang sama. Kelas ini memecahkan masalah, saat berpindah dari mesin pengembangan berbasis Windows ke mesin produksi berbasis Unix.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.FilenameUtils Kelas -
public class FilenameUtils
extends Object
Fitur FileNameUtils
Kelas ini mendefinisikan enam komponen dalam nama file. Pertimbangkan contoh lokasi sebagaiC:\dev\project\file.txt. Kemudian komponennya adalah sebagai berikut:
Awalan - C: \
Jalur Relatif - dev \ project \
Jalur absolut - C: \ dev \ project \
Nama - file.txt
Nama dasar - file
Ekstensi - txt
Untuk mengidentifikasi direktori, tambahkan pemisah ke nama file.
Contoh Kelas FilenameUtils
Contoh Kelas FilenameUtils diberikan di bawah ini -
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));
}
}
Keluaran
Outputnya diberikan di bawah ini -
Full Path: C:\dev\project\
Relative Path: dev\project\
Prefix: C:\
Extension: txt
Base: file
Name: file.txt
Normalized Path: C:\commons\lang\project.xml
FileSystemUtils menyediakan metode untuk mendapatkan ruang kosong pada drive disk.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.FileSystemUtils Kelas -
public class FileSystemUtils
extends Object
Contoh Kelas FileSystemUtils
Diberikan di bawah ini adalah contoh dari FileSystemUtils Class -
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());
}
}
}
Keluaran
Diberikan di bawah ini adalah output -
Free Space 61355640 kb
Pencacahan sensitivitas huruf IO. Sistem Operasi yang berbeda memiliki aturan berbeda untuk sensitivitas huruf besar-kecil untuk nama file. Misalnya, Windows peka huruf besar kecil untuk penamaan file sementara Unix peka huruf besar kecil. IOCase menangkap perbedaan itu, menyediakan enumerasi untuk mengontrol bagaimana perbandingan nama file harus dilakukan. Ini juga menyediakan metode untuk menggunakan pencacahan untuk melakukan perbandingan.
Deklarasi Enum
Berikut adalah deklarasi untuk org.apache.commons.io.IOCase Enum -
public enum IOCase
extends Enum<IOCase> implements Serializable
Contoh IOCase Enum
Contoh IOCase Enum diberikan di bawah ini -
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));
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut -
Ends with Learning (case sensitive): false
Ends with Learning (case insensitive): true
Equality Check (case sensitive): false
Equality Check (case insensitive): true
LineIterator menyediakan cara fleksibel untuk bekerja dengan file berbasis baris. Mari kita pelajari hal yang sama di bab ini.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.LineIterator Kelas -
public class LineIterator
extends Object implements Iterator<String>, Closeable
Contoh Kelas LineIterator
Berikut adalah file input yang perlu kita parse -
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());
}
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut -
Contents of input.txt
Welcome to TutorialsPoint. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.
NameFileFilter di Commons IO memfilter nama file untuk sebuah nama.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.filefilter.NameFileFilter Kelas:
public class NameFileFilter
extends AbstractFileFilter implements Serializable
Contoh Kelas NameFileFilter
Berikut adalah file input yang perlu kita parse -
Welcome to TutorialsPoint. Simply Easy Learning.
Mari mencetak semua file dan direktori di direktori saat ini dan kemudian, filter file yang namanya 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]);
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut -
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with name input.txt
input.txt
WildcardFileFilter di Commons IO memfilter file menggunakan wildcard yang disediakan.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.filefilter.WildcardFileFilter Kelas -
public class WildcardFileFilter
extends AbstractFileFilter implements Serializable
Contoh Kelas WildcardFileFilter
Berikut adalah file input yang perlu kita parse
Welcome to TutorialsPoint. Simply Easy Learning.
Mari cetak semua file dan direktori di direktori saat ini dan kemudian, filter file yang namanya diakhiri dengan 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]);
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File name ending with t
.project
input.txt
SuffixFileFilter memfilter file yang didasarkan pada akhiran. Ini digunakan untuk mengambil semua file dari tipe tertentu.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.filefilter.SuffixFileFilter Kelas -
public class SuffixFileFilter
extends AbstractFileFilter implements Serializable
Contoh Kelas SuffixFileFilter
Berikut adalah file input yang perlu kita parse -
Welcome to TutorialsPoint. Simply Easy Learning.
Mari mencetak semua file dan direktori di direktori saat ini dan kemudian, filter file dengan ekstensi 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]);
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
PrefixFileFilter memfilter file yang didasarkan pada awalan.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.filefilter.PrefixFileFilter Kelas -
public class PrefixFileFilter
extends AbstractFileFilter implements Serializable
Contoh Kelas PrefixFileFilter
Berikut adalah file input yang perlu kita parse -
Welcome to TutorialsPoint. Simply Easy Learning.
Mari mencetak semua file dan direktori di direktori saat ini dan kemudian, filter file dengan nama yang dimulai dengan input.
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]);
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut -
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
OrFileFilter menyediakan logika OR bersyarat di seluruh daftar filter file. Ini mengembalikan true, jika ada filter dalam daftar yang mengembalikan true. Jika tidak, itu mengembalikan false.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.filefilter.OrFileFilter Kelas -
public class OrFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Contoh Kelas OrFileFilter
Berikut adalah file input yang perlu kita parse -
Welcome to TutorialsPoint. Simply Easy Learning.
Mari mencetak semua file dan direktori di direktori saat ini dan kemudian, filter file dengan nama yang dimulai dengan. atau diakhiri dengan t.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.OrFileFilter;
import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.commons.io.filefilter.WildcardFileFilter;
public class IOTester {
public static void main(String[] args) {
try {
usingOrFileFilter();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingOrFileFilter() throws IOException {
//get the current directory
File currentDirectory = new File(".");
//get names of all files and directory in current directory
String[] files = currentDirectory.list();
System.out.println("All files and Folders.\n");
for( int i = 0; i < files.length; i++ ) {
System.out.println(files[i]);
}
System.out.println("\nFile starting with . or ends with t\n");
String[] filesNames = currentDirectory.list( new OrFileFilter(new PrefixFileFilter("."), new WildcardFileFilter("*t")));
for( int i = 0; i < filesNames.length; i++ ) {
System.out.println(filesNames[i]);
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.classpath
.project
.settings
input.txt
AndFileFilter menyediakan kondisional dan logika di seluruh daftar filter file. Ini mengembalikan true, jika semua filter dalam daftar mengembalikan true. Jika tidak, itu mengembalikan false.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.filefilter.AndFileFilter Kelas -
public class AndFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Contoh Kelas AndFileFilter
Berikut adalah file input yang perlu kita parse -
Welcome to TutorialsPoint. Simply Easy Learning.
Mari mencetak semua file dan direktori di direktori saat ini dan kemudian, filter file dengan nama yang dimulai dengan. dan diakhiri dengan t.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.AndFileFilter;
import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.commons.io.filefilter.WildcardFileFilter;
public class IOTester {
public static void main(String[] args) {
try {
usingAndFileFilter();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingAndFileFilter() throws IOException {
//get the current directory
File currentDirectory = new File(".");
//get names of all files and directory in current directory
String[] files = currentDirectory.list();
System.out.println("All files and Folders.\n");
for( int i = 0; i < files.length; i++ ) {
System.out.println(files[i]);
}
System.out.println("\nFile starting with . and ends with t\n");
String[] filesNames = currentDirectory.list(new AndFileFilter(
new PrefixFileFilter("."), new WildcardFileFilter("*t")));
for( int i = 0; i < filesNames.length; i++ ) {
System.out.println(filesNames[i]);
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.project
FileEntry menyediakan status file atau direktori. Atribut file pada suatu titik waktu.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.monitor.FileEntry Kelas -
public class FileEntry
extends Object implements Serializable
Fitur FileEntry
Objek kelas FileEntry menyediakan atribut file berikut pada satu titik waktu.
getName () - nama file.
ada () - memeriksa apakah file ada atau tidak.
isDirectory () - memeriksa apakah file adalah direktori.
lastModified () - memberikan waktu tanggal modifikasi terakhir.
listFiles () - memberikan isi direktori.
Contoh Kelas FileEntry
Berikut adalah file input yang perlu kita parse -
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());
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Monitored File: input.txt
File name: input.txt
Is Directory: false
FileAlterationObserver mewakili status file di bawah direktori root, memeriksa sistem file dan memberi tahu pendengar tentang membuat, mengubah, atau menghapus peristiwa.
Deklarasi Kelas
Berikut adalah deklarasi untuk
org.apache.commons.io.monitor.FileAlterationObserver Kelas -
public class FileAlterationObserver
extends Object implements Serializable
Contoh Kelas FileAlterationObserver
Berikut adalah file input yang perlu kita parse -
Welcome to TutorialsPoint. Simply Easy Learning.
IOTester.java
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileDeleteStrategy;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
public class IOTester {
public static void main(String[] args) {
try {
usingFileAlterationObserver();
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
public static void usingFileAlterationObserver() throws IOException {
//get the file object
File inputFile = FileUtils.getFile("input.txt");
String absolutePath = inputFile.getAbsolutePath();
String parent = absolutePath.substring(0,absolutePath.indexOf("input.txt"));
File parentDirectory = FileUtils.getFile(parent);
FileAlterationObserver observer = new
FileAlterationObserver(parentDirectory);
observer.addListener(new FileAlterationListenerAdaptor() {
@Override
public void onDirectoryCreate(File file) {
System.out.println("Folder created: " + file.getName());
}
@Override
public void onDirectoryDelete(File file) {
System.out.println("Folder deleted: " + file.getName());
}
@Override
public void onFileCreate(File file) {
System.out.println("File created: " + file.getName());
}
@Override
public void onFileDelete(File file) {
Syst em.out.println("File deleted: " + file.getName());
}
});
//create a monitor to check changes after every 500 ms
FileAlterationMonitor monitor = new FileAlterationMonitor(500, observer);
try {
monitor.start();
//create a new directory
File newFolder = new File("test");
File newFile = new File("test1");
newFolder.mkdirs();
Thread.sleep(1000);
newFile.createNewFile();
Thread.sleep(1000);
FileDeleteStrategy.NORMAL.delete(newFolder);
Thread.sleep(1000);
FileDeleteStrategy.NORMAL.delete(newFile);
Thread.sleep(1000);
monitor.stop(10000);
} catch(IOException e) {
System.out.println(e.getMessage());
} catch(InterruptedException e) {
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
FileAlterationMonitor mewakili utas yang memunculkan utas pemantauan yang memicu FileAlterationObserver terdaftar apa pun pada interval tertentu.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.monitor.FileAlterationMonitor Class -
public final class FileAlterationMonitor
extends Object implements Runnable
Contoh Kelas FileAlterationMonitor
Berikut adalah file input yang perlu kita parse -
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());
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
NameFileComparator membandingkan nama dari dua file. Ini dapat digunakan untuk mengurutkan daftar atau array file, menggunakan namanya, baik dengan cara yang case-sensitive, case-insensitive atau system dependent case sensitive.
Deklarasi Kelas
Berikut adalah deklarasi untuk
org.apache.commons.io.comparator.NameFileComparator Kelas -
public class NameFileComparator
extends Object implements Serializable
Contoh Kelas NameFileComparator
Berikut adalah file input yang perlu kita parse -
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());
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Sorted By Name:
.classpath
.project
input.txt
SizeFileComparator membandingkan ukuran dua file / direktori. Ini dapat digunakan untuk mengurutkan daftar atau array file menggunakan ukuran atau direktori mereka, berdasarkan jumlah turunannya.
Deklarasi Kelas
Berikut adalah deklarasi untuk
org.apache.commons.io.comparator.SizeFileComparator Kelas -
public class SizeFileComparator
extends Object implements Serializable
Contoh Kelas SizeFileComparator
Berikut adalah file input yang perlu kita parse -
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());
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Sorted By Size:
input.txt, size:124
.project, size:382
.classpath, size:441
LastModifiedFileComparator membandingkan tanggal modifikasi terakhir dari dua file / direktori. Ini dapat digunakan untuk mengurutkan daftar atau array file / direktori menggunakan tanggal terakhir diubah.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.comparator.LastModifiedFileComparator Kelas -
public class LastModifiedFileComparator
extends Object implements Serializable
Contoh Kelas LastModifiedFileComparator
Berikut adalah file input yang perlu kita parse -
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()));
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
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
Ini adalah proxy InputStream yang secara transparan menulis salinan semua byte yang dibaca dari aliran proxy ke OutputStream tertentu. Aliran input proxy ditutup, ketika metode close () pada proxy ini dipanggil. Ini dapat digunakan untuk mengoperasikan dua aliran secara kolektif pada satu waktu.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.input.TeeInputStream Kelas -
public class TeeInputStream
extends ProxyInputStream
Contoh Kelas TeeInputStream
Dalam contoh ini, menutup TeeInputStream akan menutup objek TeeInputStream serta 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());
}
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.
TeeOutputStream membagi OutputStream. Ini dinamai perintah 'tee' unix. Ini memungkinkan aliran untuk bercabang menjadi dua aliran.
Deklarasi Kelas
Berikut adalah deklarasi untuk org.apache.commons.io.output.TeeOutputStream Kelas -
public class TeeOutputStream
extends ProxyOutputStream
Contoh Kelas TeeOutputStream
Dalam contoh ini, TeeOutputStream menerima dua aliran keluaran sebagai parameter dan meneruskan data ke set data TeeOutputStream ke kedua aliran keluaran.
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());
}
}
}
}
Keluaran
Ini akan mencetak hasil sebagai berikut.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.