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.