Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Java OutputStreamWriter và các phương thức của nó với sự trợ giúp của các ví dụ.
Các OutputStreamWriter
lớp của java.io
gói có thể được sử dụng để chuyển đổi dữ liệu ở dạng nhân vật vào dữ liệu trong byte mẫu.
Nó mở rộng lớp trừu tượng Writer
.
Các OutputStreamWriter
lớp học làm việc với dòng đầu ra khác. Nó còn được gọi là cầu nối giữa các luồng byte và các luồng ký tự. Điều này là do các OutputStreamWriter
ký tự chuyển đổi các ký tự của nó thành byte.
Ví dụ, một số ký tự yêu cầu 2 byte được lưu trữ trong bộ nhớ. Để ghi dữ liệu như vậy, chúng ta có thể sử dụng trình viết luồng đầu ra để chuyển đổi ký tự thành các byte tương ứng và lưu trữ các byte lại với nhau.
Tạo một OutputStreamWriter
Để tạo một OutputStreamWriter
, java.io.OutputStreamWriter
trước tiên chúng ta phải nhập gói. Khi chúng tôi nhập gói ở đây là cách chúng tôi có thể tạo trình ghi luồng đầu ra.
// Creates an OutputStream
FileOutputStream file = new FileOutputStream(String path);
// Creates an OutputStreamWriter
OutputStreamWriter output = new OutputStreamWriter(file);
Trong ví dụ trên, chúng tôi đã tạo một OutputStreamWriter
đầu ra được đặt tên cùng với FileOutputStream
tệp được đặt tên.
Ở đây, chúng tôi đang sử dụng mã hóa ký tự mặc định để ghi ký tự vào luồng đầu ra.
Tuy nhiên, chúng ta có thể chỉ định kiểu mã hóa ký tự ( UTF8 hoặc UTF16 ) được sử dụng để ghi dữ liệu.
// Creates an OutputStreamWriter specifying the character encoding
OutputStreamWriter output = new OutputStreamWriter(file, Charset cs);
Ở đây, chúng tôi đã sử dụng Charset
lớp để chỉ định kiểu mã hóa ký tự.
Các phương thức của OutputStreamWriter
Các OutputStreamWriter
lớp học cung cấp triển khai cho các phương pháp khác nhau trình bày trong Writer
lớp.
viết phương pháp
write()
– writes a single character to the writerwrite(char[] array)
– writes the characters from the specified array to the writerwrite(String data)
– writes the specified string to the writer
Ví dụ: OutputStreamWriter để ghi dữ liệu vào một tệp
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String args[]) {
String data = "This is a line of text inside the file.";
try {
// Creates a FileOutputStream
FileOutputStream file = new FileOutputStream("output.txt");
// Creates an OutputStreamWriter
OutputStreamWriter output = new OutputStreamWriter(file);
// Writes string to the file
output.write(data);
// Closes the writer
output.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
Trong ví dụ trên, chúng tôi đã tạo một trình đọc luồng đầu ra bằng cách sử dụng luồng xuất tệp. Trình đọc luồng đầu ra được liên kết với tệp output.txt .
FileOutputStream file = new FileOutputStream("output.txt");
OutputStreamWriter output = new OutputStreamWriter(file);
Để ghi dữ liệu vào tệp, chúng tôi đã sử dụng write()
phương pháp.
Ở đây, khi chúng ta chạy chương trình, tệp output.txt sẽ chứa nội dung sau.
This is a line of text inside the file.
Phương thức getEncoding ()
Các getEncoding()
phương pháp có thể được sử dụng để có được các loại mã hóa được sử dụng để ghi dữ liệu vào dòng đầu ra. Ví dụ,
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.io.FileOutputStream;
class Main {
public static void main(String[] args) {
try {
// Creates an output stream
FileOutputStream file = new FileOutputStream("output.txt");
// Creates an output stream reader with default encoding
OutputStreamWriter output1 = new OutputStreamWriter(file);
// Creates an output stream reader specifying the encoding
OutputStreamWriter output2 = new OutputStreamWriter(file, Charset.forName("UTF8"));
// Returns the character encoding of the output stream
System.out.println("Character encoding of output1: " + output1.getEncoding());
System.out.println("Character encoding of output2: " + output2.getEncoding());
// Closes the reader
output1.close();
output2.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
Đầu ra
The character encoding of output1: Cp1252 The character encoding of output2: UTF8
Trong ví dụ trên, chúng ta đã tạo 2 trình ghi luồng đầu ra có tên là output1 và output2 .
- output1 does not specify the character encoding. Hence the
getEncoding()
method returns the default character encoding. - output2 specifies the character encoding, UTF8. Hence the
getEncoding()
method returns the specified character encoding.
Lưu ý : Chúng tôi đã sử dụng Charset.forName()
phương pháp để chỉ định loại mã hóa ký tự. Để tìm hiểu thêm, hãy truy cập Java Charset (tài liệu Java chính thức) .
phương thức close ()
Để đóng trình ghi dòng đầu ra, chúng ta có thể sử dụng close()
phương pháp này. Khi close()
phương thức được gọi, chúng ta không thể sử dụng trình viết để ghi dữ liệu.
Các phương thức khác của OutputStreamWriter
Method | Decfscription |
---|---|
flush() | forces to write all the data present in the writer to the corresponding destination |
append() | inserts the specified character to the current writer |
Để tìm hiểu thêm, hãy truy cập Java OutputStreamWriter (tài liệu Java chính thức) .