Apache Commons IO - คู่มือฉบับย่อ

ไลบรารี Apache Commons IO จัดเตรียมคลาสยูทิลิตี้ต่างๆสำหรับการดำเนินการทั่วไปสำหรับ File IO ซึ่งครอบคลุมกรณีการใช้งานที่หลากหลาย ช่วยหลีกเลี่ยงการเขียนโค้ดสำเร็จรูป

Apache Commons IO library มีคลาสสำหรับหมวดหมู่ต่อไปนี้ -

คลาสยูทิลิตี้

ชั้นเรียนเหล่านี้ซึ่งอยู่ภายใต้ org.apache.commons.ioแพ็คเกจให้การเปรียบเทียบไฟล์และสตริง ต่อไปนี้เป็นตัวอย่างบางส่วน

  • IOUtils- จัดเตรียมวิธีการยูทิลิตี้สำหรับการอ่านเขียนและคัดลอกไฟล์ วิธีการทำงานกับ InputStream, OutputStream, Reader และ Writer

  • FilenameUtils- จัดเตรียมวิธีการทำงานกับชื่อไฟล์โดยไม่ต้องใช้ File Object ทำงานบนระบบปฏิบัติการที่แตกต่างกันในลักษณะเดียวกัน

  • FileUtils - จัดเตรียมวิธีการจัดการไฟล์เช่นการย้ายการเปิดการตรวจสอบการมีอยู่การอ่านไฟล์ ฯลฯ วิธีการเหล่านี้ใช้ File Object

  • IOCase - จัดเตรียมวิธีการจัดการและเปรียบเทียบสตริง

  • FileSystemUtils - ระบุวิธีการรับพื้นที่ว่างบนดิสก์ไดรฟ์

  • LineIterator - ให้วิธีที่ยืดหยุ่นในการทำงานกับไฟล์ตามบรรทัด

กรองคลาส

กรองคลาสที่อยู่ภายใต้แพ็กเกจ org.apache.commons.io.filefilter มีวิธีการกรองไฟล์ตามเกณฑ์ตรรกะแทนการเปรียบเทียบที่น่าเบื่อตามสตริง ต่อไปนี้เป็นตัวอย่างบางส่วน

  • NameFileFilter - กรองชื่อไฟล์สำหรับชื่อ

  • WildcardFileFilter - กรองไฟล์โดยใช้สัญลักษณ์ตัวแทนที่ให้มา

  • SuffixFileFilter- กรองไฟล์ตามคำต่อท้าย ใช้ในการดึงไฟล์ทั้งหมดในประเภทใดประเภทหนึ่ง

  • PrefixFileFilter - กรองไฟล์ตามคำนำหน้า

  • OrFileFilter- ให้เงื่อนไขหรือตรรกะในรายการตัวกรองไฟล์ ส่งคืนค่าจริงหากตัวกรองใด ๆ ในรายการส่งคืนจริง มิฉะนั้นจะส่งกลับเท็จ

  • AndFileFilter- จัดเตรียมเงื่อนไขและตรรกะในรายการตัวกรองไฟล์ ส่งคืนเท็จหากตัวกรองใด ๆ ในรายการส่งคืนเท็จ มิฉะนั้นจะส่งกลับจริง

คลาส 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 - นับจำนวนไบต์ที่ส่งผ่านสตรีม

  • ProxyOutputStream - เปลี่ยนการโทรเป็นสตรีมพร็อกซี

  • LockableFileWriter - FileWriter เพื่อสร้างไฟล์ล็อคและอนุญาตให้จัดการการล็อกไฟล์ข้ามเธรดได้อย่างง่ายดาย

ในบทนี้เราจะเรียนรู้เกี่ยวกับการตั้งค่าสภาพแวดล้อมภายในของ Apache Commons IO และวิธีตั้งค่าเส้นทางของ Commons IO สำหรับ Windows 2000 / XP, Windows 95/98 / ME เป็นต้นนอกจากนี้เรายังจะเข้าใจเกี่ยวกับตัวแก้ไขจาวายอดนิยมและ วิธีดาวน์โหลดไฟล์ Commons IO archive

การตั้งค่าสภาพแวดล้อมท้องถิ่น

หากคุณยังคงเต็มใจที่จะตั้งค่าสภาพแวดล้อมของคุณสำหรับภาษาการเขียนโปรแกรม Java ส่วนนี้จะแนะนำคุณเกี่ยวกับวิธีดาวน์โหลดและตั้งค่า Java บนเครื่องของคุณ โปรดทำตามขั้นตอนด้านล่างเพื่อตั้งค่าสภาพแวดล้อม

Java SE มีให้ดาวน์โหลดฟรีที่ลิงค์ https://www.oracle.comคุณจึงดาวน์โหลดเวอร์ชันที่อิงตามระบบปฏิบัติการของคุณ

ทำตามคำแนะนำเพื่อดาวน์โหลด Java และเรียกใช้ไฟล์ .exeเพื่อติดตั้ง Java บนเครื่องของคุณ เมื่อคุณติดตั้ง Java บนเครื่องของคุณแล้วคุณจะต้องตั้งค่าตัวแปรสภาพแวดล้อมให้ชี้ไปที่ไดเร็กทอรีการติดตั้งที่ถูกต้อง

เส้นทางสำหรับ Windows 2000 / XP

ให้เราเข้าใจวิธีตั้งค่าเส้นทางสำหรับ Windows 2000 / XP เราสมมติว่าคุณได้ติดตั้ง Java ในc:\Program Files\java\jdk ไดเรกทอรี

  • คลิกขวาที่ 'My Computer' และเลือก 'Properties'

  • คลิกที่ปุ่ม "ตัวแปรสภาพแวดล้อม" ใต้แท็บ "ขั้นสูง"

  • ตอนนี้เปลี่ยนตัวแปร 'Path' เพื่อให้มันมีพา ธ ไปยังไฟล์ปฏิบัติการ Java ตัวอย่างหากเส้นทางถูกตั้งค่าเป็น 'C: \ WINDOWS \ SYSTEM32' ให้เปลี่ยนเส้นทางของคุณเพื่ออ่าน'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.

เส้นทางสำหรับ Windows 95/98 / ME

ให้เราเข้าใจวิธีตั้งค่าเส้นทางสำหรับ Windows 95/98 / ME เราสมมติว่าคุณได้ติดตั้ง Java ในc:\Program Files\java\jdk ไดเรกทอรี

  • แก้ไขไฟล์ '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 ที่ซับซ้อนมากมายในตลาด แต่ในตอนนี้คุณสามารถพิจารณาข้อใดข้อหนึ่งต่อไปนี้ -

  • Notepad - บนเครื่อง Windows คุณสามารถใช้โปรแกรมแก้ไขข้อความง่ายๆเช่น Notepad (แนะนำสำหรับบทช่วยสอนนี้), TextPad

  • Netbeans - เป็น Java IDE ที่เป็นโอเพ่นซอร์สและฟรีและสามารถดาวน์โหลดได้จาก https://www.netbeans.org/index.html.

  • Eclipse - นอกจากนี้ยังเป็น Java IDE ที่พัฒนาโดยชุมชนโอเพนซอร์ส eclipse และสามารถดาวน์โหลดได้จาก https://www.eclipse.org/.

ดาวน์โหลด Common IO Archive

ดาวน์โหลดไฟล์ Apache Common IO jar เวอร์ชันล่าสุดจาก commons-io-2.6- bin.zip ซึ่งมีอยู่ที่download_io.cgiในขณะที่เขียนบทช่วยสอนนี้เราได้ดาวน์โหลด commons-io-2.6-bin.zip และคัดลอก ลงในโฟลเดอร์ C: \> Apache

ระบบปฏิบัติการ ชื่อที่เก็บถาวร
Windows commons-io-2.6-bin.zip
ลินุกซ์ commons-io-2.6-bin.tar.gz
Mac commons-io-2.6-bin.tar.gz

Apache Common IO Environment

ตั้งค่า APACHE_HOMEตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่งไดเร็กทอรีฐานโดยที่ Apache jar จะถูกเก็บไว้ในเครื่องของคุณ สมมติว่าเราได้แยก commons-io-2.6-bin.zip ในโฟลเดอร์ Apache บนระบบปฏิบัติการต่างๆดังนี้

ระบบปฏิบัติการ เอาต์พุต
Windows ตั้งค่าตัวแปรสภาพแวดล้อม APACHE_HOME เป็น C: \ Apache
ลินุกซ์ ส่งออก APACHE_HOME = / usr / local / Apache
Mac ส่งออก APACHE_HOME = / Library / Apache

ตั้งค่าตัวแปร CLASSPATH

ตั้งค่า CLASSPATHตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่งโถ IO ทั่วไป สมมติว่าคุณเก็บ commons-io-2.6-bin.zip ไว้ในโฟลเดอร์ Apache บนระบบปฏิบัติการต่างๆดังต่อไปนี้

ระบบปฏิบัติการ เอาต์พุต
Windows ตั้งค่าตัวแปรสภาพแวดล้อม CLASSPATH เป็น% CLASSPATH%;% APACHE_HOME% \ commons-io-2.6.jar; .;
ลินุกซ์ ส่งออก CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar:.
Mac ส่งออก CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar:.

IOUtils มีวิธีการยูทิลิตี้สำหรับการอ่านเขียนและคัดลอกไฟล์ วิธีการทำงานกับ InputStream, OutputStream, Reader และ Writer

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.io.IOUtils คลาส -

public class IOUtils
   extends Object

คุณสมบัติของ IOUtils

คุณสมบัติของ IOUtils มีดังต่อไปนี้ -

  • จัดเตรียมวิธียูทิลิตี้แบบคงที่สำหรับการดำเนินการอินพุต / เอาต์พุต

  • toXXX () - อ่านข้อมูลจากสตรีม

  • write () - เขียนข้อมูลไปยังสตรีม

  • copy () - คัดลอกข้อมูลทั้งหมดไปยังสตรีมไปยังสตรีมอื่น

  • contentEquals - เปรียบเทียบเนื้อหาของสองสตรีม

ตัวอย่าง IOUtils Class

นี่คือไฟล์อินพุตที่เราต้องแยกวิเคราะห์ -

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.

FileUtils มีวิธีการจัดการไฟล์เช่นการย้ายการเปิดการตรวจสอบการมีอยู่การอ่านไฟล์ ฯลฯ วิธีการเหล่านี้ใช้ File Object

การประกาศคลาส

ต่อไปนี้เป็นการประกาศสำหรับ org.apache.commons.io.FileUtils Class -

public class FileUtils
   extends Object

คุณสมบัติของ FileUtils

คุณสมบัติของ FileUtils มีดังต่อไปนี้ -

  • วิธีการเขียนลงไฟล์

  • วิธีการอ่านจากไฟล์

  • วิธีการสร้างไดเร็กทอรีรวมถึงไดเร็กทอรีหลัก

  • วิธีการคัดลอกไฟล์และไดเร็กทอรี

  • วิธีการลบไฟล์และไดเร็กทอรี

  • วิธีการแปลงเป็นและจาก 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.

FilenameUtils จัดเตรียมเมธอดในการทำงานกับชื่อไฟล์โดยไม่ต้องใช้ File Object ทำงานบนระบบปฏิบัติการที่แตกต่างกันในลักษณะเดียวกัน คลาสนี้แก้ไขปัญหาเมื่อย้ายจากเครื่องพัฒนาที่ใช้ Windows ไปยังเครื่องผลิตที่ใช้ Unix

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.io.FilenameUtils คลาส -

public class FilenameUtils
   extends Object

คุณสมบัติของ FileNameUtils

คลาสนี้กำหนดส่วนประกอบหกส่วนภายในชื่อไฟล์ พิจารณาตำแหน่งตัวอย่างเช่นC:\dev\project\file.txt. จากนั้นส่วนประกอบมีดังนี้:

  • คำนำหน้า - C: \

  • เส้นทางสัมพัทธ์ - dev \ project \

  • เส้นทางสัมบูรณ์ - C: \ dev \ project \

  • ชื่อ - file.txt

  • ชื่อฐาน - ไฟล์

  • ส่วนขยาย - txt

ในการระบุไดเร็กทอรีให้เพิ่มตัวคั่นให้กับชื่อไฟล์

ตัวอย่างคลาส FilenameUtils

ตัวอย่างของ FilenameUtils Class มีให้ด้านล่าง -

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

FileSystemUtils จัดเตรียมเมธอดในการรับพื้นที่ว่างบนดิสก์ไดรฟ์

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.io.FileSystemUtils คลาส -

public class FileSystemUtils
   extends Object

ตัวอย่างของคลาส FileSystemUtils

ด้านล่างเป็นตัวอย่างของ 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());
      }
   }
}

เอาต์พุต

ด้านล่างคือผลลัพธ์ -

Free Space 61355640 kb

การแจกแจงความไวของตัวพิมพ์ IO ระบบปฏิบัติการที่แตกต่างกันมีกฎที่แตกต่างกันสำหรับกรณีไวสำหรับชื่อไฟล์ ตัวอย่างเช่น Windows ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่สำหรับการตั้งชื่อไฟล์ในขณะที่ Unix นั้นคำนึงถึงตัวพิมพ์เล็กและใหญ่ IOCase จับความแตกต่างดังกล่าวจัดเตรียมการแจงนับเพื่อควบคุมวิธีการเปรียบเทียบชื่อไฟล์ที่ควรดำเนินการ นอกจากนี้ยังมีวิธีการใช้การแจงนับเพื่อทำการเปรียบเทียบ

ประกาศ Enum

ต่อไปนี้คือคำประกาศสำหรับ org.apache.commons.io.IOCase Enum -

public enum IOCase
   extends Enum<IOCase> implements Serializable

ตัวอย่าง IOCase Enum

ตัวอย่างของ IOCase Enum แสดงไว้ด้านล่าง -

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

LineIterator มีวิธีที่ยืดหยุ่นในการทำงานกับไฟล์แบบบรรทัด ให้เราเรียนรู้เรื่องเดียวกันในบทนี้

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.io.LineIterator คลาส -

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

ตัวอย่าง LineIterator Class

นี่คือไฟล์อินพุตที่เราต้องแยกวิเคราะห์ -

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.

NameFileFilter ใน Commons IO จะกรองชื่อไฟล์สำหรับชื่อ

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ 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

WildcardFileFilter ใน Commons IO จะกรองไฟล์โดยใช้สัญลักษณ์แทนที่ให้มา

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ 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

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

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

OrFileFilter จัดเตรียมตรรกะตามเงื่อนไขหรือในรายการตัวกรองไฟล์ จะคืนค่าเป็นจริงหากตัวกรองใด ๆ ในรายการส่งคืนจริง มิฉะนั้นจะส่งกลับเท็จ

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.io.filefilter.OrFileFilter คลาส -

public class OrFileFilter
   extends AbstractFileFilter implements ConditionalFileFilter, Serializable

ตัวอย่างคลาส OrFileFilter

นี่คือไฟล์อินพุตที่เราต้องแยกวิเคราะห์ -

Welcome to TutorialsPoint. Simply Easy Learning.

มาพิมพ์ไฟล์และไดเร็กทอรีทั้งหมดในไดเร็กทอรีปัจจุบันจากนั้นกรองไฟล์ที่มีชื่อขึ้นต้นด้วย หรือลงท้ายด้วย 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]);
      }
   }
}

เอาต์พุต

มันจะพิมพ์ผลลัพธ์ต่อไปนี้

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File starting with . or ends with t

.classpath
.project
.settings
input.txt

AndFileFilter จัดเตรียมเงื่อนไขและตรรกะในรายการตัวกรองไฟล์ จะคืนค่าเป็นจริงหากตัวกรองทั้งหมดในรายการส่งคืนจริง มิฉะนั้นจะส่งกลับเท็จ

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.io.filefilter.AndFileFilter คลาส -

public class AndFileFilter
   extends AbstractFileFilter implements ConditionalFileFilter, Serializable

ตัวอย่างคลาส AndFileFilter

นี่คือไฟล์อินพุตที่เราต้องแยกวิเคราะห์ -

Welcome to TutorialsPoint. Simply Easy Learning.

มาพิมพ์ไฟล์และไดเร็กทอรีทั้งหมดในไดเร็กทอรีปัจจุบันจากนั้นกรองไฟล์ที่มีชื่อขึ้นต้นด้วย และลงท้ายด้วย 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]);
      }
   }
}

เอาต์พุต

มันจะพิมพ์ผลลัพธ์ต่อไปนี้

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File starting with . or ends with t

.project

FileEntry จัดเตรียมสถานะของไฟล์หรือไดเร็กทอรี แอตทริบิวต์ของไฟล์ในช่วงเวลาหนึ่ง

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.io.monitor.FileEntry คลาส -

public class FileEntry
   extends Object implements Serializable

คุณสมบัติของ FileEntry

อ็อบเจ็กต์คลาส FileEntry จัดเตรียมแอ็ตทริบิวต์ไฟล์ต่อไปนี้ในช่วงเวลาหนึ่ง

  • getName () - ชื่อไฟล์

  • มีอยู่ () - ตรวจสอบว่ามีไฟล์อยู่หรือไม่

  • 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

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

เอาต์พุต

มันจะพิมพ์ผลลัพธ์ต่อไปนี้

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

FileAlterationMonitor แสดงถึงเธรดที่สร้างเธรดการมอนิเตอร์ที่ทริกเกอร์ FileAlterationObserver ที่ลงทะเบียนในช่วงเวลาที่กำหนด

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.io.monitor.FileAlterationMonitor Class -

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

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

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

LastModifiedFileComparator เปรียบเทียบวันที่แก้ไขล่าสุดของสองไฟล์ / ไดเร็กทอรี สามารถใช้เพื่อจัดเรียงรายการหรืออาร์เรย์ของไฟล์ / ไดเรกทอรีโดยใช้วันที่แก้ไขล่าสุด

การประกาศคลาส

ต่อไปนี้เป็นคำประกาศสำหรับ org.apache.commons.io.comparator.LastModifiedFileComparator คลาส -

public class LastModifiedFileComparator
   extends Object implements Serializable

ตัวอย่าง LastModifiedFileComparator Class

นี่คือไฟล์อินพุตที่เราต้องแยกวิเคราะห์ -

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

เป็นพร็อกซี 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.

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

เอาต์พุต

มันจะพิมพ์ผลลัพธ์ต่อไปนี้

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