Tags:

Cách thêm text vào cuối file trong Java

Việc thêm dữ liệu vào một file đã tồn tại trước đó gần như rất phổ biến, vì những dữ liệu đã tồn tại trước đó là một phần thông tin mà chúng ta đã xây dựng. Nếu xử lý không đúng, thì những dữ liệu này sẽ bị xoá sạch bởi các Java IO class.

Trong bài viết này chúng ta sẽ cùng nhau tìm cách thêm text vào cuối file thay vì xoá hết dữ liệu tồn tại trước đó.

Tóm tắt chúnng ta có 4 cách cơ bản sau:

Thêm text vào cuối file – FileWriter

FileWriter cung cấp một constructor:

public FileWriter(String fileName, boolean append) throws IOException 

cho phép ghi dữ liệu vào cuối file thông qua thuộc tính boolean append. Chúng ta chỉ cần truyền giá trị append =  TRUE như sau:

File file = new File("append.txt");
FileWriter fr = new FileWriter(file, true);
fr.write("data");
fr.close();

Thêm text vào cuối file – BufferedWriter

Bản chất BufferedWriter là một wrapper của FileWriter cung cấp cơ chế bộ nhớ đệm nhầm tối ưu hiệu xuất ghi file.

File file = new File("append.txt");
FileWriter fr = new FileWriter(file, true);
BufferedWriter br = new BufferedWriter(fr);
br.write("data");

br.close();
fr.close();

Thêm text vào cuối file – PrintWriter

Sử dụng PrintWriter bao bên ngoài BufferedWriter như sau:

File file = new File("append.txt");
FileWriter fr = new FileWriter(file, true);
BufferedWriter br = new BufferedWriter(fr);
PrintWriter pr = new PrintWriter(br);
pr.println("data");
pr.close();
br.close();
fr.close();

Thêm text vào cuối file – FileOutputStream

Bạn nên sử dụng FileOutputStream để nối dữ liệu vào file khi đó là dữ liệu thô, dữ liệu nhị phân, hình ảnh, video, v.v.

 

OutputStream os = new FileOutputStream(new File("append.txt"), true);
os.write("data".getBytes(), 0, "data".length());
os.close();

Ví dụ

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;

public class JavaAppendToFile {


	public static void main(String[] args) {
		String filePath = "./src/append.txt";

		String appendText = "This String will be appended to the file, Byte=0x0A 0xFF";

		appendUsingFileWriter(filePath, appendText);

		appendUsingBufferedWriter(filePath, appendText, 2);

		appendUsingPrintWriter(filePath, appendText);

		appendUsingFileOutputStream(filePath, appendText);
	}

	private static void appendUsingPrintWriter(String filePath, String text) {
		File file = new File(filePath);
		FileWriter fr = null;
		BufferedWriter br = null;
		PrintWriter pr = null;
		try {
			// Sử dụng PrintWriter
			fr = new FileWriter(file, true);
			br = new BufferedWriter(fr);
			pr = new PrintWriter(br);
			pr.println(text);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				pr.close();
				br.close();
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}


	private static void appendUsingFileOutputStream(String fileName, String data) {
		OutputStream os = null;
		try {
			// 
Sử dụng FileOutputStream
			os = new FileOutputStream(new File(fileName), true);
			os.write(data.getBytes(), 0, data.length());
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				os.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}


	private static void appendUsingBufferedWriter(String filePath, String text, int noOfLines) {
		File file = new File(filePath);
		FileWriter fr = null;
		BufferedWriter br = null;
		try {
			// Sử dụng BufferedWriter
			fr = new FileWriter(file, true);
			br = new BufferedWriter(fr);
			for (int i = 0; i < noOfLines; i++) {
				br.newLine();
				// you can use write or append method
				br.write(text);
			}

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				br.close();
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}


	private static void appendUsingFileWriter(String filePath, String text) {
		File file = new File(filePath);
		FileWriter fr = null;
		try {
			// Sử dụng FileWriter
			fr = new FileWriter(file, true);
			fr.write(text);

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

Nguồn

https://www.journaldev.com/881/java-append-to-file

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x