CodeGym /Blog Java /Ngẫu nhiên /Java – Ghi vào tập tin

Java – Ghi vào tập tin

Xuất bản trong nhóm
Một trong những nhiệm vụ phổ biến nhất trong phát triển phần mềm là khả năng đọc và ghi tệp. Trong Java, ghi vào một tệp là một quá trình đơn giản có thể được thực hiện bằng cách sử dụng các lớp và phương thức có sẵn. Trong bài viết này, chúng ta sẽ khám phá cách ghi vào một tệp bằng Java và thảo luận về các lớp và phương thức khác nhau có liên quan. Java cung cấp các lớp dựng sẵn như FileWriterPrintWriter để ghi vào một tệp trong Java.

Ví dụ về ghi vào tệp Java

Để bắt đầu, chúng ta hãy xem một ví dụ đơn giản về việc ghi vào một tệp trong Java. Đây là một ví dụ về cách ghi một chuỗi vào một tệp trong Java bằng lớp FileWriter :

Lớp FileWriter

Lớp FileWriter là một cách khác để ghi vào một tệp trong Java. Đây là lớp luồng ký tự cho phép bạn ghi dữ liệu ký tự vào một tệp. Đây là một ví dụ minh họa cách sử dụng lớp FileWriter để ghi Chuỗi vào một tệp:
import java.io.FileWriter;
import java.io.IOException;


// Main method for the string to file in java starts from here,
public class WriteToFileExample {
    public static void main(String[] args) {
        // create a string to write text to file
        String data = "Hello, world!";

        try {
            // create a FileWriter object with the file name
            FileWriter writer = new FileWriter("output.txt");

            // write the string to the file
            writer.write(data);

            // close the writer
            writer.close();

            System.out.println("Successfully wrote text to file.");

        } catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}
Trong ví dụ này, trước tiên chúng ta tạo một đối tượng String có tên data chứa văn bản chúng ta muốn ghi vào một tệp. Sau đó, chúng ta tạo một đối tượng FileWriter với tên của tệp mà chúng ta muốn ghi vào, trong trường hợp này là có tên là out.txt . Tiếp theo, chúng ta sử dụng phương thức write() của đối tượng FileWriter để ghi chuỗi dữ liệu vào file. Phương thức này lấy một đối số Chuỗi chứa dữ liệu cần ghi. Cuối cùng, chúng ta đóng đối tượng FileWriter để giải phóng tài nguyên tệp và in thông báo thành công ra bàn điều khiển nếu thao tác ghi thành công hoặc thông báo lỗi nếu gặp ngoại lệ. Lớp FileWriter là một cách đơn giản để ghi dữ liệu ký tự vào một tệp trong Java.

Lớp FileOutputStream

Lớp FileOutputStream được sử dụng để ghi dữ liệu vào tệp dưới dạng luồng byte. Đây là một ví dụ:
import java.io.FileOutputStream;
import java.io.IOException;

public class WriteToFileExample {
    public static void main(String[] args) {
        String textToWrite = "Hello World!";

        try {
            FileOutputStream stream = new FileOutputStream("output.txt");
            byte[] bytesToWrite = textToWrite.getBytes();
            stream.write(bytesToWrite);
            stream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Trong ví dụ này, chúng tôi tạo một đối tượng FileOutputStream có tên là luồng với tên tệp "output.txt" để ghi vào. Sau đó, chúng tôi chuyển đổi chuỗi textToWrite thành một mảng byte bằng phương thức getBytes() và ghi mảng byte vào đối tượng luồng bằng phương thức write() . Cuối cùng, chúng ta đóng đối tượng luồng .

Lớp BufferedWriter

Lớp BufferedWriter được sử dụng để ghi văn bản vào một tệp có khả năng lưu vào bộ đệm. Đây là một ví dụ:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class WriteToFileExample {
    public static void main(String[] args) {
        String textToWrite = "Hello World!";

        try {
            BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
            writer.write(textToWrite);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Trong ví dụ này, chúng ta tạo một đối tượng BufferedWriter có tên là writer với đối tượng FileWriter ghi vào tệp "output.txt". Sau đó chúng ta sử dụng phương thức write() của đối tượng writer để ghi textToWrite vào tệp. Cuối cùng, chúng ta đóng đối tượng writer .

Phương thức WriteString()

Phương thức writeString () là một phương thức tiện lợi được giới thiệu trong Java 11 để ghi Chuỗi vào tệp bằng lớp Tệp . Nó cho phép bạn viết một Chuỗi vào một tệp bằng một dòng mã. Đây là một ví dụ:
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class WriteToFileExample {
    public static void main(String[] args) {
        // create a string to write to a file
        String data = "Hello, world!";

        // create a file object
        Path file = Paths.get("output.txt");

        try {
            // write the string to the file using writeString() method
            Files.writeString(file, data);

            System.out.println("Successfully wrote text to file.");

        } catch (IOException e) {
            System.out.println("An error occurred.");
            e.printStackTrace();
        }
    }
}
Trong ví dụ này, trước tiên chúng ta tạo một đối tượng String có tên data chứa văn bản chúng ta muốn ghi vào một tệp. Sau đó, chúng tôi tạo một đối tượng Đường dẫn có tên tệp đại diện cho tệp mà chúng tôi muốn ghi vào, trong trường hợp này là có tên là "output.txt". Tiếp theo, chúng ta sử dụng phương thức Files.writeString() để ghi chuỗi dữ liệu vào tệp được đại diện bởi đối tượng tệp . Phương thức này nhận hai đối số: đối tượng Path biểu thị tệp cần ghi vào và đối tượng String chứa dữ liệu cần ghi. Cuối cùng, chúng tôi in thông báo thành công ra bàn điều khiển nếu thao tác ghi thành công hoặc thông báo lỗi nếu gặp ngoại lệ. Phương thức writeString () là một cách thuận tiện để ghi Chuỗi vào tệp bằng Java 11 trở lên.

Lớp nhà văn in

Lớp PrintWriter tự động xóa bộ đệm đầu ra sau mỗi dòng được ghi, đảm bảo rằng dữ liệu được ghi ngay vào tệp. Điều này làm cho nó trở thành một lựa chọn thuận tiện để ghi lượng lớn dữ liệu văn bản vào một tệp. Đây là một ví dụ:
import java.io.PrintWriter;
import java.io.FileWriter;
import java.io.IOException;

public class WriteToFileExample {
    public static void main(String[] args) {
        String textToWrite = "Hello World!";

        try {
            PrintWriter writer = new PrintWriter(new FileWriter("output.txt"));
            writer.println(textToWrite);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Trong ví dụ này, chúng ta tạo một đối tượng PrintWriter có tên là writer với đối tượng FileWrite ghi vào tệp "output.txt". Sau đó chúng ta sử dụng phương thức println() của đối tượng writer để ghi textToWrite vào tệp. Cuối cùng, chúng ta đóng đối tượng writer .

Lớp DataOutputStream

Lớp DataOutputStream được sử dụng để ghi các kiểu dữ liệu Java nguyên thủy vào một tệp dưới dạng luồng byte. Đây là một ví dụ:
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class WriteToFileExample {
    public static void main(String[] args) {
        String textToWrite = "Hello World!";
        int numberToWrite = 42;

        try {
            DataOutputStream stream = new DataOutputStream(new FileOutputStream("output.txt"));
            stream.writeUTF(textToWrite);
            stream.writeInt(numberToWrite);
            stream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Trong ví dụ này, chúng tôi tạo một đối tượng DataOutputStream có tên là luồng , đối tượng này ghi vào tệp "output.txt". Sau đó, chúng ta sử dụng phương thức writeUTF() của đối tượng luồng để ghi chuỗi textToWrite và phương thức writeInt() để ghi số nguyên numberToWrite vào tệp. Cuối cùng, chúng ta đóng đối tượng luồng .

Lớp kênh tệp

Lớp FileChannel cung cấp cách ghi dữ liệu vào tệp bằng cách sử dụng I/O được ánh xạ bộ nhớ. Đây là một ví dụ:
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class WriteToFileExample {
    public static void main(String[] args) {
        String textToWrite = "Hello World!";

        try {
            File file = new File("output.txt");
            RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
            FileChannel channel = randomAccessFile.getChannel();
            ByteBuffer buffer = ByteBuffer.allocate(1024);
            buffer.put(textToWrite.getBytes());
            buffer.flip();
            channel.write(buffer);
            randomAccessFile.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Trong ví dụ này, trước tiên chúng ta tạo một đối tượng File có tên file với tên tệp "output.txt" làm tham số. Sau đó, chúng tôi tạo một đối tượng RandomAccessFile có tên là RandomAccessFile với đối tượng tệp và chế độ "rw" làm tham số. Sau đó chúng ta tạo một đối tượng FileChannel có tên làchannel , đối tượng này được khởi tạo bằng cách sử dụng đối tượng RandomAccessFile . Sau đó, chúng ta tạo một đối tượng ByteBuffer có tên là buffer với dung lượng 1024 byte và đặt chuỗi textToWrite làm tham số. Sau đó, chúng ta lật đối tượng bộ đệm để chuẩn bị ghi và ghi nó vào đối tượng kênh bằng phương thức write() . Cuối cùng, chúng ta đóng đối tượng RandomAccessFile .

Phần kết luận

Tóm lại, ghi vào một tệp bằng Java là một nhiệm vụ phổ biến trong phát triển phần mềm có thể được thực hiện bằng cách sử dụng một số lớp và phương thức tích hợp sẵn. Trong bài viết này, chúng ta đã thảo luận một số ví dụ về cách ghi vào một tệp, bao gồm việc sử dụng các lớp FileOutputStream , BufferedWriter , FileWriter , PrintWriter , DataOutputStreamFileChannel . Điều quan trọng cần lưu ý là khi ghi vào một tệp, việc xử lý lỗi thích hợp và đóng tệp sau khi ghi là rất quan trọng để đảm bảo rằng tệp được lưu đúng cách và tài nguyên được giải phóng hợp lý. Với các ví dụ được cung cấp trong bài viết này, giờ đây, những người mới bắt đầu có thể hiểu cơ bản về cách ghi vào tệp bằng Java và có thể bắt đầu thực hành cũng như thử nghiệm các trường hợp sử dụng khác nhau.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION