Cách tự động hóa các thao tác tệp cơ bản bằng Java
Nhiều ứng dụng cần làm việc với các tệp, cho dù chúng đang viết, di chuyển hay xóa chúng. Tìm hiểu cách thực hiện tất cả những điều này và hơn thế nữa, bằng cách sử dụng Java.
Có rất nhiều nhiệm vụ lặp đi lặp lại mà bạn có thể cần phải hoàn thành theo thời gian. Một ví dụ là nếu bạn cần thường xuyên thay đổi các tệp trên máy tính cục bộ của mình. Những hành động này có thể bao gồm sao chép, di chuyển, xóa hoặc lưu trữ tệp.
Thay vì hoàn thành các tác vụ lặp đi lặp lại này theo cách thủ công, bạn có thể tự động hóa chúng bằng một chương trình. Bạn có thể thực hiện việc này với một tệp kịch bản duy nhất, sử dụng một trong nhiều ngôn ngữ lập trình có sẵn, chẳng hạn như Java.
Mục Lục
Cách thiết lập ứng dụng Java
Trước tiên, hãy đảm bảo rằng bạn đã cài đặt Bộ phát triển Java SE của Oracle. Sau đó, tạo một ứng dụng bảng điều khiển Java đơn giản:
- Tạo một tệp ở bất kỳ đâu trên máy tính của bạn được gọi là SimpleScript.java.
- Mở tệp trong trình soạn thảo văn bản hoặc IDE.
- Ở đầu tệp, nhập Lớp IOException. Điều này sẽ cho phép bạn xử lý các ngoại lệ liên quan đến tệp hoặc IO khi cố gắng thực hiện các chức năng nhất định, chẳng hạn như sao chép tệp.
import java.io.IOException; - Dưới đây, thêm lớp Java chính và chính phương pháp. Phương thức chính sẽ chạy khi bạn khởi động ứng dụng. Hiện tại, chỉ cần in một tin nhắn để đảm bảo chương trình chạy chính xác. Sau đó, bạn có thể thay thế nội dung của hàm chính bằng bất kỳ ví dụ nào sau đây để kiểm tra chúng.
class SimpleScript {
public static void main(String args[]) throws IOException {
System.out.println("Simple Console App");
}
} - Để chạy tập lệnh, hãy bắt đầu bằng cách sử dụng dòng lệnh để điều hướng đến vị trí của tệp java của bạn. Ví dụ: nếu bạn đã lưu trữ tệp của mình trên Máy tính để bàn, lệnh sẽ là:
cd Desktop - Lưu tệp và sử dụng javac lệnh để biên dịch nó. Mỗi khi bạn thực hiện các thay đổi đối với tệp, bạn sẽ cần phải biên dịch lại nó với javac.
javac SimpleScript.java - Chạy ứng dụng:
java SimpleScript
Cách truy cập tệp cục bộ trong máy tính của bạn
Bạn có thể sử dụng lớp Tệp để truy cập theo chương trình các tệp trong một thư mục.
- Tạo một thư mục mới, được gọi là Từ điển mới, trong cùng thư mục với tệp java của bạn. Tạo một số tệp bên trong nó — chúng có thể là tệp văn bản trống nếu bạn muốn.
- Ở đầu ứng dụng Java của bạn, hãy nhập lớp Tệp. Điều này sẽ cho phép bạn truy cập các phương pháp nhất định và chức năng khác liên quan đến các tệp và thư mục hệ điều hành.
import java.io.File; - Tạo một đối tượng Tệp mới bằng cách sử dụng đường dẫn tương đối đến thư mục mới của bạn.
File directory = new File("NewDirectory"); - Sử dụng hàm listFiles () để truy cập danh sách tất cả các tệp bên trong thư mục đó.
File[] listOfFiles = directory.listFiles();for (File file : listOfFiles) {
System.out.println(file);
} - Biên dịch lại và chạy chương trình bằng cách sử dụng javac và java các lệnh.
Cách sao chép tệp sang vị trí khác
Có nhiều cách bạn có thể sao chép tệp. Một cách phổ biến để sao chép tệp (đặc biệt là trước Java 7 và gói java.nio.file), là sử dụng các lớp FileInputStream hoặc FileOutputStream.
- Các FileInputStream lớp cho phép bạn mở một luồng đầu vào để đọc các byte từ một tệp.
- Các FileOutputStream lớp cho phép bạn mở một luồng đầu ra để ghi các byte vào một tệp.
Khi sao chép tệp, ý tưởng là mở một luồng đầu vào và đầu ra. Sử dụng các luồng đó, bạn sẽ đọc các byte của tệp tại vị trí nguồn, và sau đó ghi các byte đó vào vị trí mới.
Ví dụ này sẽ sử dụng một triển khai mới hơn để sao chép tệp, bằng cách sử dụng hàm copy () từ lớp Tệp của gói java.nio.file. Để sử dụng gói java.nio.file, bạn phải cài đặt Java 7 trở lên.
- Ở đầu tệp, nhập các lớp Tệp và Đường dẫn từ gói java.nio.file.
import java.nio.file.Files;
import java.nio.file.Paths; - Thêm một tệp mới có tên FileToCopy.txt trong cùng một thư mục với tệp java của bạn. Trong hàm main (), khai báo đường dẫn tương đối đến tệp đó.
String copySource = "FileToCopy.txt"; - Tạo một Thư mục mới, được gọi là Thư mục mới, để sao chép tệp sang. Thêm đường dẫn tương đối đến đích trong hàm main ().
String copyDestination = "NewFolder/FileToCopy.txt"; - Sử dụng phương thức copy () để sao chép tệp từ nguồn đến đích.
try {
Files.copy(Paths.get(copySource), Paths.get(copyDestination));
} catch(Exception e) {
System.out.println("Could not copy the specs file in: " + copyDestination
+ " . Check if the folder or file already exists.");
} - Biên dịch lại và chạy chương trình bằng cách sử dụng javac và java các lệnh.
- Mở Thư mục Mới để xác nhận rằng chương trình đã sao chép tệp của bạn.
Cách di chuyển tệp hoặc thư mục
Bạn có thể di chuyển các tệp hoặc thư mục bằng cách sử dụng di chuyển() trong lớp Tệp, cũng là một phần của gói java.nio.file.
- Tạo một thư mục mới có tên DirectoryToMove trong cùng một thư mục với tệp Java của bạn.
- Tạo một thư mục thứ hai có tên là Từ điển mới trong cùng một thư mục. Đây là nơi chương trình sẽ di chuyển thư mục gốc đến.
- Tạo các đối tượng Tệp cho thư mục bạn muốn di chuyển và vị trí bạn muốn di chuyển nó đến:
File moveSource = new File("DirectoryToMove");
File moveDestination = new File("NewDirectory/DirectoryToMove"); - Sử dụng Files.move () phương pháp để di chuyển tệp từ nguồn đến đích:
try {
Files.move(moveSource.toPath(), moveDestination.toPath());
System.out.println("Directory moved successfully.");
} catch (IOException ex) {
ex.printStackTrace();
} - Biên dịch lại và chạy chương trình bằng cách sử dụng javac và java các lệnh.
- Mở thư mục NewDirectory để xem thư mục “DirectoryToMove” hiện đang ở bên trong.
Cách xóa tệp
Bạn có thể dùng xóa bỏ() từ lớp Tệp để xóa một tệp cụ thể.
- Tạo một tệp có tên FileToDelete.txt. Lưu tệp trong cùng thư mục với ứng dụng Java của bạn.
- Tạo một đối tượng Tệp mới cho tệp bạn muốn xóa. Sau đó, sử dụng phương thức delete () của nó để xóa tệp. Phương thức xóa trả về giá trị true hoặc false, tùy thuộc vào việc xóa thành công hay không.
File fileToDelete = new File("FileToDelete.txt");if (fileToDelete.delete()) {
System.out.println("File succesfully deleted.");
} else {
System.out.println("Unable to delete the file.");
}
Cách nén tệp
Có nhiều cách để bạn có thể tạo một kho lưu trữ zip chứa một số tệp nén. Ví dụ này sẽ sử dụng ZipOutputStream và ZipEntry các lớp học.
- Nhập các lớp ZipOutputStream, ZipEntry và FileOutputStream cần thiết ở đầu tệp.
import java.util.zip.ZipOutputStream;
import java.util.zip.ZipEntry;
import java.io.FileOutputStream; - Tạo tệp zip và danh sách các đối tượng zipEntry đại diện cho các tệp văn bản bạn muốn nén. Ví dụ này sẽ tạo các tệp văn bản mới, nhưng bạn có thể sửa đổi tập lệnh sau để bao gồm các tệp văn bản đã tồn tại.
File zipFile = new File("ZippedFile.zip");
ZipEntry[] zipEntries = new ZipEntry[] {new ZipEntry("zipFile1.txt"),
new ZipEntry("zipFile2.txt"), new ZipEntry("zipFile3.txt")}; - Tạo luồng đầu ra zip để ghi dữ liệu vào tệp zip.
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile)); - Thêm từng tệp vào thư mục zip và đóng luồng.
for (ZipEntry zipEntry : zipEntries) {
out.putNextEntry(zipEntry);StringBuilder sb = new StringBuilder();
sb.append("Content Inside Text File");byte[] data = sb.toString().getBytes();
out.write(data, 0, data.length);
out.closeEntry();
}out.close();
- Biên dịch lại và chạy chương trình bằng cách sử dụng javac và java các lệnh. Bạn sẽ thấy thư mục zip mới xuất hiện trong thư mục tệp của mình.
Tự động hóa các tác vụ đơn giản với Java
Bạn có thể sử dụng một tập lệnh để hoàn thành các tác vụ trình quản lý tệp lặp đi lặp lại theo lập trình. Các tác vụ này bao gồm truy cập, sao chép, di chuyển, xóa và nén tệp.
Một cách khác bạn có thể tự động hóa các tác vụ lặp đi lặp lại là sử dụng các lệnh hệ thống trong một tệp kịch bản. Trên Linux và macOS, các tệp như vậy được gọi là tập lệnh shell, trong khi Windows gọi chúng là tập lệnh lô.