Bài 25: Thao tác với tệp và thư mục trong Java - Lập trình Java cơ bản

Đăng bởi: Admin | Lượt xem: 730 | Chuyên mục: Java


Lớp java.io.File cung cấp rất nhiều các phương thức hữu ích để làm việc với cái tệp và thư mục. Sau đây, chúng ta sẽ cùng nhau tìm hiểu cách tạo, đổi tên, sao chép, xóa, cập nhật,.. của một tệp hoặc thư mục.

1. Tạo tệp rỗng

Sử dụng phương thức createNewFile () trên một đối tượng File  để tạo một tệp rỗng mới. Phương thức này trả về true nếu tệp được tạo thành công và trả về false nếu tệp đã tồn tại.
package com.company;

import java.io.*;

public class Main {
    public static void main(String args[]) throws IOException {
        File file = new File("E:/bkitsoftware/demo.txt");
        //Tạo file với đường dẫn E:/bkitsoftware/demo.txt
        file.createNewFile();
    }
}
Nếu tệp đã tồn tại, thì sẽ không tạo tệp khác đè lên tệp cũ.

2. Tạo tệp tạm thời

Sử dụng phương thức createTempFile () để tạo một tệp tạm thời  File tạm có thể xem như là rác của các thiết bị nếu các chương trình sinh ra mà không tự xóa đi. Khi đó bạn sẽ phải dùng các chương trình dọn dẹp để xóa các file đó ra khỏi máy, giảm bớt dung lượng lưu trữ vô ích.
package com.company;

import java.io.*;

public class Main {
    public static void main(String args[]) throws IOException {
        File tempFile = File.createTempFile("vnCoder", ".log");
        BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
        writer.write("I love BkitSoftware");
        writer.close();
        FileInputStream fis = new FileInputStream(tempFile);
        int i = -1;
        while ((i = fis.read()) != -1) {
            System.out.print((char) i);
        }
        tempFile.deleteOnExit();
    }
}
I love BkitSoftware

3. Tạo thư mục

Sử dụng phương thức mkdir () để tạo một thư mục. Phương thức này trả về true nếu thư mục đã được tạo và ngược lại, Nếu thư mục đã tồn tại, thì không tạo thư mục khác đè lên thư mục cũ
package com.company;

import java.io.*;

public class Main {
    public static void main(String args[]) throws IOException {
        File newDir = new File("E:/bkitsoftware/vnCoder");
        if (newDir.mkdir()) {
            System.out.println("Directory created");
        } else {
            System.out.println("Directory not created");
        }
    }
}
Directory created // Khi chạy lần 1
_________________________________________
Directory not created // Khi chạy lần 2
Khi tạo thư mục, Java sẽ tự động tạo các thư mục chưa tồn tại trong đường link nhập vào (cho phép tạo các thư mục lồng nhau).

4. Liệt kê nội dung của một thư mục

Sử dụng phương thức list() để liệt kê nội dung của một thư mục. Phương thức này trả về một mảng  các tên tệp và thư mục trong thư mục đã chỉ định.
package com.company;

import java.io.*;

public class Main {
    public static void main(String args[]) throws IOException {
        File newDir = new File("E:/bkitsoftware/vnCoder");
        String[] str = newDir.list();
        for (String s:str){
            System.out.println(s);
        }
    }
}
Kết quả thu được:
demo.txt
folder1

5. Đổi tên tệp hoặc thư mục:

Sử dụng phương thức renameTo (Tệp) để đổi tên tệp hoặc thư mục. Phương thức sẽ trả về true nếu tệp / thư mục bị đổi tên hoặc false nếu không (ví dụ: tệp / thư mục gốc không tồn tại). Ví dụ:
File oldName = new File("OldBkitLogo.png");
File newName = new File("NewBkitLogo.png");
 
boolean renamed = oldName.renameTo(newName);
 
if (renamed) {
    System.out.println("The file was renamed");
} else {
    System.out.println("Could not rename");
}
Chuyển tệp OldBkitLogo.png thành NewBkitLogo.png.

6. Xóa một tệp hoặc  thư mục

Sử dụng phương thức delete() để xóa tệp hoặc thư mục. Phương thức sẽ trả về true nếu tệp / thư mục bị xóa hoặc false nếu không (ví dụ: tệp / thư mục gốc không tồn tại). Ví dụ:
File file = new File("CodeJavaLogoSmall.png");
 
if (file.delete()) {
    System.out.println("The file was deleted");
} else {
    System.out.println("Could not delete the file");
}
Để xóa một thư mục không rỗng, bạn phải xóa tất cả các tệp và thư mục con trong đó. 
Bạn có thể gọi phương thức removeOnExit () để báo cho Máy ảo Java xóa tệp khi chương trình kết thúc và JVM kết thúc. Điều này rất hữu ích để xóa các tệp tạm thời được sử dụng khi chạy chương trình.

7. Sao chép một tệp

Bạn có thể sử dụng BufferedInputStream và BufferedOutputStream để có thể  sao chép tệp:
try (
        BufferedInputStream inputStream
            = new BufferedInputStream(new FileInputStream(inputFile));
 
        BufferedOutputStream outputStream
            = new BufferedOutputStream(new FileOutputStream(outputFile));
) {
 
    int byteRead;
 
    while ((byteRead = inputStream.read()) != -1) {
    outputStream.write(byteRead);
    }
} catch (IOException ex) {
    ex.printStackTrace();
}
Tuy nhiên, đoạn mã trên không hiệu quả. Thay vào đó, bạn có thể sử dụng FileChannel trong gói java.nio.channels để sao chép tệp hiệu quả hơn. Phương thức sau đây sao chép tệp nguồn vào đích bằng FileChannel :
public static void copyFile(File sourceFile, File destFile) {
    try (
        FileChannel sourceChannel = new FileInputStream(sourceFile).getChannel();
        FileChannel destChannel = new FileOutputStream(destFile).getChannel();
    ) {
        sourceChannel.transferTo(0, sourceChannel.size(), destChannel);
 
    } catch (IOException ex) {
        System.err.println(ex.getMessage());
    }
}
Như vậy, mình đã giới thiệu đến các bạn những thao tác cơ bản đối với tệp và thư mục trong Java. Cảm ơn các bạn đã đọc.
Bài tiếp theo: Tổng quan về Collection trong Java >>
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!