Apache Commons IO - Hướng dẫn nhanh
Thư viện Apache Commons IO cung cấp các lớp tiện ích khác nhau cho các hoạt động phổ biến cho IO File bao gồm nhiều trường hợp sử dụng. Nó giúp tránh viết mã soạn sẵn.
Thư viện Apache Commons IO cung cấp các lớp cho các danh mục sau:
Các lớp tiện ích
Các lớp này dưới org.apache.commons.iogói, cung cấp so sánh tệp và chuỗi. Sau đây là một số ví dụ.
IOUtils- Cung cấp các phương thức tiện ích để đọc, ghi và sao chép tệp. Các phương pháp này hoạt động với InputStream, OutputStream, Reader và Writer.
FilenameUtils- Cung cấp phương thức làm việc với tên tệp mà không cần sử dụng Đối tượng tệp. Nó hoạt động trên các hệ điều hành khác nhau theo cách tương tự.
FileUtils - Cung cấp các phương thức để thao tác với tệp như di chuyển, mở, kiểm tra sự tồn tại, đọc tệp, v.v. Các phương thức này sử dụng Đối tượng tệp.
IOCase - Cung cấp phương thức để thao tác và so sánh chuỗi.
FileSystemUtils - Cung cấp phương pháp lấy dung lượng trống trên ổ đĩa.
LineIterator - Cung cấp một cách linh hoạt để làm việc với tệp dựa trên dòng.
Lọc các lớp
Lọc các lớp nằm trong gói org.apache.commons.io.filefilter, cung cấp các phương pháp lọc tệp dựa trên tiêu chí logic thay vì so sánh tẻ nhạt dựa trên chuỗi. Sau đây là một số ví dụ.
NameFileFilter - Lọc tên tệp cho một tên.
WildcardFileFilter - Lọc các tập tin bằng cách sử dụng các ký tự đại diện được cung cấp.
SuffixFileFilter- Lọc các tập tin dựa trên hậu tố. Điều này được sử dụng để truy xuất tất cả các tệp của một loại cụ thể.
PrefixFileFilter - Lọc các tập tin dựa trên tiền tố.
OrFileFilter- Cung cấp logic HOẶC có điều kiện trên một danh sách các bộ lọc tệp. Trả về true, nếu bất kỳ bộ lọc nào trong danh sách trả về true. Nếu không, nó trả về false.
AndFileFilter- Cung cấp điều kiện và logic trên một danh sách các bộ lọc tệp. Trả về false nếu bất kỳ bộ lọc nào trong danh sách trả về false. Nếu không, nó trả về true.
Các lớp giám sát tệp
Các lớp giám sát tệp nằm dưới org.apache.commons.io.monitorgói, cung cấp quyền kiểm soát để theo dõi các thay đổi trong một tệp hoặc thư mục cụ thể và cho phép thực hiện hành động tương ứng với các thay đổi. Sau đây là một số ví dụ.
FileEntry- Cung cấp trạng thái của một tệp hoặc thư mục. Thuộc tính tệp tại một thời điểm.
FileAlterationObserver - Biểu diễn trạng thái của tệp bên dưới thư mục gốc, kiểm tra hệ thống tệp và thông báo cho người nghe về các sự kiện tạo, thay đổi hoặc xóa.
FileAlterationMonitor - Đại diện cho một luồng sinh ra một luồng giám sát kích hoạt bất kỳ Máy chủ FileAlterationObserver đã đăng ký nào tại một khoảng thời gian xác định.
Các lớp so sánh
Các lớp theo dõi tệp dưới org.apache.commons.io.comparator gói cho phép so sánh và sắp xếp các tập tin và thư mục một cách dễ dàng.
NameFileComparator - So sánh tên của hai tệp.
SizeFileComparator - So sánh kích thước của hai tệp.
LastModifiedFileComparator - So sánh ngày sửa đổi cuối cùng của hai tệp.
Phát trực tiếp các lớp học
Có nhiều triển khai của InputStream trong gói org.apache.commons.io.input và của OutputStream trong gói org.apache.commons.io.output, để thực hiện các tác vụ hữu ích trên luồng. Sau đây là một số ví dụ.
NullOutputStream - Hấp thụ tất cả dữ liệu được gửi với bất kỳ lỗi nào.
TeeOutputStream - Gửi đầu ra đến hai luồng.
ByteArrayOutputStream - Phiên bản nhanh hơn của lớp JDK.
CountingOutputStream - Đếm số byte được truyền qua luồng.
ProxyOutputStream - Thay đổi các cuộc gọi đến luồng proxy.
LockableFileWriter - Một FileWriter để tạo các tệp khóa và cho phép xử lý khóa tệp luồng chéo đơn giản.
Trong chương này, chúng ta sẽ tìm hiểu về thiết lập môi trường cục bộ của Apache Commons IO và cách thiết lập đường dẫn của Commons IO cho Windows 2000 / XP, Windows 95/98 / ME, v.v. Chúng ta cũng sẽ hiểu về một số trình soạn thảo java phổ biến và cách tải xuống kho lưu trữ Commons IO.
Thiết lập môi trường cục bộ
Nếu bạn vẫn sẵn sàng thiết lập môi trường của mình cho ngôn ngữ lập trình Java, thì phần này sẽ hướng dẫn bạn cách tải xuống và thiết lập Java trên máy của bạn. Vui lòng làm theo các bước được đề cập bên dưới để thiết lập môi trường.
Java SE có sẵn miễn phí để tải về tại liên kết https://www.oracle.comVì vậy, bạn tải xuống một phiên bản dựa trên hệ điều hành của bạn.
Làm theo hướng dẫn để tải xuống Java và chạy .exeđể cài đặt Java trên máy của bạn. Khi bạn đã cài đặt Java trên máy của mình, bạn sẽ cần đặt các biến môi trường để trỏ đến các thư mục cài đặt chính xác.
Đường dẫn cho Windows 2000 / XP
Hãy để chúng tôi hiểu, cách thiết lập đường dẫn cho Windows 2000 / XP. Chúng tôi giả định rằng bạn đã cài đặt Java trongc:\Program Files\java\jdk danh mục.
Nhấp chuột phải vào 'Máy tính của tôi' và chọn 'Thuộc tính'.
Nhấp vào nút 'Biến môi trường' trong tab 'Nâng cao'.
Bây giờ, hãy thay đổi biến 'Path', để nó cũng chứa đường dẫn đến tệp thực thi Java. Ví dụ, nếu đường dẫn hiện được đặt thành 'C: \ WINDOWS \ SYSTEM32', thì hãy thay đổi đường dẫn của bạn để đọc'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.
Đường dẫn cho Windows 95/98 / ME
Hãy để chúng tôi hiểu, cách thiết lập đường dẫn cho Windows 95/98 / ME. Chúng tôi giả định rằng bạn đã cài đặt Java trongc:\Program Files\java\jdk danh mục.
Chỉnh sửa tệp 'C: \ autoexec.bat' và thêm dòng sau vào cuối - 'SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin'
Đường dẫn cho Linux, UNIX, Solaris, FreeBSD
Biến môi trường PATH phải được đặt để trỏ đến nơi, các tệp nhị phân Java đã được cài đặt. Tham khảo tài liệu shell của bạn, nếu bạn gặp khó khăn khi thực hiện việc này.
Ví dụ: nếu bạn sử dụng bash làm trình bao, thì bạn sẽ thêm dòng sau vào cuối '.bashrc: export PATH = / path / to / java: $ PATH'
Trình chỉnh sửa Java phổ biến
Để viết các chương trình Java, bạn cần một trình soạn thảo văn bản. Có rất nhiều IDE tinh vi có sẵn trên thị trường. Nhưng hiện tại, bạn có thể xem xét một trong những điều sau:
Notepad - Trên máy Windows, bạn có thể sử dụng bất kỳ trình soạn thảo văn bản đơn giản nào như Notepad (Khuyến nghị cho hướng dẫn này), TextPad.
Netbeans - Đây là một IDE Java mã nguồn mở và miễn phí, có thể tải xuống từ https://www.netbeans.org/index.html.
Eclipse - Nó cũng là một IDE Java được phát triển bởi cộng đồng nguồn mở eclipse và có thể được tải xuống từ https://www.eclipse.org/.
Tải xuống kho lưu trữ IO chung
Tải xuống phiên bản mới nhất của tệp jar Apache Common IO từ commons-io-2.6- bin.zip, hiện có tại download_io.cgi Tại thời điểm viết hướng dẫn này, chúng tôi đã tải xuống commons-io-2.6-bin.zip và sao chép nó vào thư mục C: \> Apache.
Hệ điều hành | Tên lưu trữ |
---|---|
các cửa sổ | commons-io-2.6-bin.zip |
Linux | commons-io-2.6-bin.tar.gz |
Mac | commons-io-2.6-bin.tar.gz |
Môi trường IO chung của Apache
Đặt APACHE_HOMEbiến môi trường để trỏ đến vị trí thư mục cơ sở nơi lưu trữ jar Apache trên máy của bạn. Giả sử, chúng tôi đã giải nén commons-io-2.6-bin.zip trong thư mục Apache trên các Hệ điều hành khác nhau như sau.
Hệ điều hành | Đầu ra |
---|---|
các cửa sổ | Đặt biến môi trường APACHE_HOME thành C: \ Apache |
Linux | xuất APACHE_HOME = / usr / local / Apache |
Mac | xuất APACHE_HOME = / Library / Apache |
Đặt biến CLASSPATH
Đặt CLASSPATHbiến môi trường để trỏ đến vị trí jar IO chung. Giả sử, bạn đã lưu trữ commons-io-2.6-bin.zip trong thư mục Apache trên các Hệ điều hành khác nhau như sau.
Hệ điều hành | Đầu ra |
---|---|
các cửa sổ | Đặt biến môi trường CLASSPATH thành% CLASSPATH%;% APACHE_HOME% \ commons-io-2.6.jar;.; |
Linux | xuất CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar:. |
Mac | xuất CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar:. |
IOUtils cung cấp các phương thức tiện ích để đọc, ghi và sao chép tệp. Các phương pháp này hoạt động với InputStream, OutputStream, Reader và Writer.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.IOUtils Lớp học -
public class IOUtils
extends Object
Các tính năng của IOUtils
Các tính năng của IOUtils được đưa ra dưới đây:
Cung cấp các phương thức tiện ích tĩnh cho các hoạt động nhập / xuất.
toXXX () - đọc dữ liệu từ một luồng.
write () - ghi dữ liệu vào một luồng.
copy () - sao chép tất cả dữ liệu vào một luồng sang một luồng khác.
contentEquals - so sánh nội dung của hai luồng.
Ví dụ về lớp IOUtils
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
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") );
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau:
Welcome to TutorialsPoint. Simply Easy Learning.
Welcome to TutorialsPoint. Simply Easy Learning.
FileUtils cung cấp phương thức để thao tác với tệp như di chuyển, mở, kiểm tra sự tồn tại, đọc tệp, v.v. Các phương thức này sử dụng Đối tượng tệp.
Khai báo lớp học
Sau đây là khai báo cho Lớp org.apache.commons.io.FileUtils -
public class FileUtils
extends Object
Các tính năng của FileUtils
Các tính năng của FileUtils được nêu dưới đây:
Các phương thức để ghi vào tệp.
Các phương pháp đọc từ một tệp.
Các phương pháp tạo một thư mục bao gồm cả thư mục mẹ.
Các phương pháp sao chép tệp và thư mục.
Phương pháp xóa tệp và thư mục.
Phương pháp chuyển đổi sang và từ một URL.
Phương pháp liệt kê các tệp và thư mục theo bộ lọc và phần mở rộng.
Các phương pháp so sánh nội dung tệp.
Phương pháp để lưu ngày thay đổi cuối cùng.
Phương pháp tính toán tổng kiểm tra.
Ví dụ về Lớp FileUtils
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
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);
}
}
Đầu ra
Đầu ra được đề cập bên dưới -
Temp
Welcome to TutorialsPoint. Simply Easy Learning.
FilenameUtils cung cấp phương pháp để làm việc với tên tệp mà không cần sử dụng Đối tượng tệp. Nó hoạt động trên các hệ điều hành khác nhau theo cách tương tự. Lớp này giải quyết các vấn đề khi chuyển từ máy phát triển dựa trên Windows sang máy sản xuất dựa trên Unix.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.FilenameUtils Lớp học -
public class FilenameUtils
extends Object
Tính năng của FileNameUtils
Lớp này định nghĩa sáu thành phần trong một tên tệp. Hãy xem xét một vị trí ví dụ nhưC:\dev\project\file.txt. Sau đó, các thành phần như sau:
Tiền tố - C: \
Đường dẫn tương đối - dev \ project \
Đường dẫn tuyệt đối - C: \ dev \ project \
Tên - file.txt
Tên cơ sở - tệp
Phần mở rộng - txt
Để xác định một thư mục, hãy thêm dấu phân tách vào tên tệp.
Ví dụ về Lớp FilenameUtils
Ví dụ về Lớp FilenameUtils được đưa ra dưới đây:
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));
}
}
Đầu ra
Đầu ra được đưa ra dưới đây -
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 cung cấp phương pháp để lấy dung lượng trống trên ổ đĩa.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.FileSystemUtils Lớp học -
public class FileSystemUtils
extends Object
Ví dụ về Lớp FileSystemUtils
Dưới đây là ví dụ về Lớp FileSystemUtils -
IOTester.java
import java.io.IOException;
import org.apache.commons.io.FileSystemUtils;
public class IOTester {
public static void main(String[] args) {
try {
System.out.println("Free Space " + FileSystemUtils.freeSpaceKb("C:/") + " Bytes");
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
}
Đầu ra
Dưới đây là kết quả -
Free Space 61355640 kb
Liệt kê phân biệt chữ hoa chữ thường IO. Các hệ điều hành khác nhau có các quy tắc khác nhau về phân biệt chữ hoa chữ thường cho tên tệp. Ví dụ, Windows không phân biệt chữ hoa chữ thường để đặt tên tệp trong khi Unix phân biệt chữ hoa chữ thường. IOCase nắm bắt được sự khác biệt đó, cung cấp một bảng liệt kê để kiểm soát cách thực hiện so sánh tên tệp. Nó cũng cung cấp các phương pháp sử dụng phép liệt kê để thực hiện so sánh.
Khai báo Enum
Sau đây là phần khai báo cho org.apache.commons.io.IOCase Enum -
public enum IOCase
extends Enum<IOCase> implements Serializable
Ví dụ về IOCase Enum
Dưới đây là một ví dụ về 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));
}
}
Đầu ra
Nó sẽ in ra kết quả sau:
Ends with Learning (case sensitive): false
Ends with Learning (case insensitive): true
Equality Check (case sensitive): false
Equality Check (case insensitive): true
LineIterator cung cấp một cách linh hoạt để làm việc với tệp dựa trên dòng. Hãy để chúng tôi tìm hiểu về điều tương tự trong chương này.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.LineIterator Lớp học -
public class LineIterator
extends Object implements Iterator<String>, Closeable
Ví dụ về lớp LineIterator
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
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());
}
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau:
Contents of input.txt
Welcome to TutorialsPoint. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.
NameFileFilter trong Commons IO lọc tên tệp cho một tên.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.filefilter.NameFileFilter Lớp học :
public class NameFileFilter
extends AbstractFileFilter implements Serializable
Ví dụ về lớp NameFileFilter
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
Welcome to TutorialsPoint. Simply Easy Learning.
Hãy in tất cả các tệp và thư mục trong thư mục hiện tại, sau đó lọc một tệp có tên là 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]);
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau:
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with name input.txt
input.txt
WildcardFileFilter trong Commons IO lọc các tệp bằng các ký tự đại diện được cung cấp.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.filefilter.WildcardFileFilter Lớp học -
public class WildcardFileFilter
extends AbstractFileFilter implements Serializable
Ví dụ về Lớp WildcardFileFilter
Đây là tệp đầu vào chúng ta cần phân tích cú pháp
Welcome to TutorialsPoint. Simply Easy Learning.
Hãy in tất cả các tệp và thư mục trong thư mục hiện tại và sau đó, lọc một tệp có tên kết thúc bằng 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]);
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File name ending with t
.project
input.txt
SuffixFileFilter lọc các tệp dựa trên hậu tố. Điều này được sử dụng để truy xuất tất cả các tệp của một loại cụ thể.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.filefilter.SuffixFileFilter Lớp học -
public class SuffixFileFilter
extends AbstractFileFilter implements Serializable
Ví dụ về lớp SuffixFileFilter
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
Welcome to TutorialsPoint. Simply Easy Learning.
Hãy in tất cả các tệp và thư mục trong thư mục hiện tại, sau đó lọc một tệp có phần mở rộng là 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]);
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
PrefixFileFilter lọc các tệp dựa trên tiền tố.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.filefilter.PrefixFileFilter Lớp học -
public class PrefixFileFilter
extends AbstractFileFilter implements Serializable
Ví dụ về lớp PrefixFileFilter
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
Welcome to TutorialsPoint. Simply Easy Learning.
Hãy in tất cả các tệp và thư mục trong thư mục hiện tại và sau đó, lọc một tệp có tên bắt đầu bằng đầu vào.
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]);
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau:
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
OrFileFilter cung cấp logic HOẶC có điều kiện trên danh sách các bộ lọc tệp. Nó trả về true, nếu bất kỳ bộ lọc nào trong danh sách trả về true. Nếu không, nó trả về false.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.filefilter.OrFileFilter Lớp học -
public class OrFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Ví dụ về lớp OrFileFilter
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
Welcome to TutorialsPoint. Simply Easy Learning.
Hãy in tất cả các tệp và thư mục trong thư mục hiện tại và sau đó, lọc một tệp có tên bắt đầu bằng. hoặc kết thúc bằng 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]);
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.classpath
.project
.settings
input.txt
AndFileFilter cung cấp điều kiện và logic trên một danh sách các bộ lọc tệp. Nó trả về true, nếu tất cả các bộ lọc trong danh sách trả về true. Nếu không, nó trả về false.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.filefilter.AndFileFilter Lớp học -
public class AndFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Ví dụ về lớp AndFileFilter
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
Welcome to TutorialsPoint. Simply Easy Learning.
Hãy in tất cả các tệp và thư mục trong thư mục hiện tại và sau đó, lọc một tệp có tên bắt đầu bằng. và kết thúc bằng 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]);
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.project
FileEntry cung cấp trạng thái của một tệp hoặc thư mục. Thuộc tính tệp tại một thời điểm.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.monitor.FileEntry Lớp học -
public class FileEntry
extends Object implements Serializable
Các tính năng của FileEntry
Đối tượng lớp FileEntry cung cấp các thuộc tính tệp sau tại một thời điểm.
getName () - tên tệp.
tồn tại () - kiểm tra xem tệp có tồn tại hay không.
isDirectory () - kiểm tra xem tệp có phải là một thư mục hay không.
lastModified () - cung cấp thời gian ngày sửa đổi lần cuối.
listFiles () - cung cấp nội dung của thư mục.
Ví dụ về Lớp FileEntry
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
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());
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
Monitored File: input.txt
File name: input.txt
Is Directory: false
FileAlterationObserver đại diện cho trạng thái của các tệp bên dưới thư mục gốc, kiểm tra hệ thống tệp và thông báo cho người nghe về các sự kiện tạo, thay đổi hoặc xóa.
Khai báo lớp học
Sau đây là khai báo cho
org.apache.commons.io.monitor.FileAlterationObserver Lớp học -
public class FileAlterationObserver
extends Object implements Serializable
Ví dụ về Lớp FileAlterationObserver
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
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());
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
FileAlterationMonitor đại diện cho một chuỗi sinh ra một chuỗi giám sát kích hoạt bất kỳ Máy chủ FileAlterationObserver đã đăng ký nào tại một khoảng thời gian cụ thể.
Khai báo lớp học
Sau đây là khai báo cho lớp org.apache.commons.io.monitor.FileAlterationMonitor -
public final class FileAlterationMonitor
extends Object implements Runnable
Ví dụ về Lớp FileAlterationMonitor
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
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());
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
NameFileComparator so sánh tên của hai tệp. Nó có thể được sử dụng để sắp xếp danh sách hoặc mảng tệp, sử dụng tên của chúng, theo cách phân biệt chữ hoa chữ thường, không phân biệt chữ hoa chữ thường hoặc phân biệt chữ hoa chữ thường hệ thống.
Khai báo lớp học
Sau đây là khai báo cho
org.apache.commons.io.comparator.NameFileComparator Lớp học -
public class NameFileComparator
extends Object implements Serializable
Ví dụ về lớp NameFileComparator
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
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());
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
Sorted By Name:
.classpath
.project
input.txt
SizeFileComparator so sánh kích thước của hai tệp / thư mục. Nó có thể được sử dụng để sắp xếp danh sách hoặc mảng tệp sử dụng kích thước hoặc thư mục của chúng, dựa trên số lượng con của chúng.
Khai báo lớp học
Sau đây là khai báo cho
org.apache.commons.io.comparator.SizeFileComparator Lớp học -
public class SizeFileComparator
extends Object implements Serializable
Ví dụ về Lớp SizeFileComparator
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
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());
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
Sorted By Size:
input.txt, size:124
.project, size:382
.classpath, size:441
LastModifiedFileComparator so sánh các ngày sửa đổi cuối cùng của hai tệp / thư mục. Nó có thể được sử dụng để sắp xếp danh sách hoặc mảng tệp / thư mục bằng cách sử dụng ngày sửa đổi cuối cùng của chúng.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.comparator.LastModifiedFileComparator Lớp học -
public class LastModifiedFileComparator
extends Object implements Serializable
Ví dụ về lớp LastModifiedFileComparator
Đây là tệp đầu vào chúng ta cần phân tích cú pháp -
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()));
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
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
Nó là một proxy InputStream ghi một cách rõ ràng bản sao của tất cả các byte được đọc từ luồng proxy vào một Dòng đầu ra nhất định. Luồng đầu vào proxy bị đóng khi phương thức close () trên proxy này được gọi. Nó có thể được sử dụng để vận hành hai luồng cùng một lúc.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.input.TeeInputStream Lớp học -
public class TeeInputStream
extends ProxyInputStream
Ví dụ về Lớp TeeInputStream
Trong ví dụ này, việc đóng TeeInputStream sẽ đóng TeeInputStream cũng như các đối tượng 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());
}
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.
TeeOutputStream chia nhỏ OutputStream. Nó được đặt tên theo lệnh unix 'tee'. Nó cho phép một luồng được phân nhánh thành hai luồng.
Khai báo lớp học
Sau đây là khai báo cho org.apache.commons.io.output.TeeOutputStream Lớp học -
public class TeeOutputStream
extends ProxyOutputStream
Ví dụ về Lớp TeeOutputStream
Trong ví dụ này, TeeOutputStream chấp nhận hai luồng đầu ra làm tham số và truyền dữ liệu đến TeeOutputStream thiết lập dữ liệu cho cả hai luồng đầu ra.
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());
}
}
}
}
Đầu ra
Nó sẽ in ra kết quả sau.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.