上次聊到了 java 的字符流 Reader,今天來看看它的好朋友 Writer 字符流。
Writer
java 中的 IO 輸出流不是只有 OutputStream 還有按字符輸出的 Writer。
OutputStream | Writer |
---|---|
字節流,以 byte 為單位 | 字符流,以 char 為單位 |
輸出字節(0~255):void write(int b) | 輸出字符(0~65535):void write(int c) |
輸出字節數組:void write(byte[] b) | 輸出字符數組:void write(char[] c) |
和 OutputStream 一樣,Writer 也是所有字符輸出流的超類。主要的方法是:public void write(char cbuf[]) throws IOException, write() 方法將 cbuf 參數全部輸出,write(String str) 和 write(int c) 兩個方法最終調用的還是 write(char cbuf[])
FileWriter
FileWriter 就是向文件中寫入字符流的 Writer。new FileWriter(fileName) 構造函數是將文件從頭開始寫入并不是在文件結尾處繼續寫入。new FileWriter(fileName, true) 則是在文件結尾處寫入。
private void fileWriteDemo() throws IOException {
Writer writer = new FileWriter("D:writer.txt");
writer.write("測試寫入".toCharArray());
writer.close();
}
Writer 實現了 Closeable 接口,可以用 try(Writer writer = new FileWriter("D:writer.txt")) {}
的方式關閉掉資源。
OutputStreamWriter
OutputStreamWriter 將輸出的字符流轉換為字節流。可以使用指定的編碼字符集。new OutputStreamWriter(OutputStream out, Charset cs) 。
private void outputStreamWriteDemo() throws IOException {
// 亂碼
try(OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("D:writer.txt"), "gb2312")) {
writer.write("杺");
writer.write(66);
}
// 正常
try(OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("D:writer.txt", true), "gbk")) {
writer.write("杺");
writer.write(66);
}
}
StringWriter 和 CharArrayWriter
StringWriter 內部有一個 StringBuffer 對象作為其緩沖區。可以利用其緩沖區中的內容來構造字符串。
private void stringWriteDemo() throws IOException {
String str = "寫入測試";
try(StringWriter writer = new StringWriter()) {
writer.write(str);
writer.write(str);
System.out.println(writer.getBuffer().toString());
}
}
CharArrayWriter 和 StringWriter 幾乎一樣,也是在內存中構造一個字符串緩沖區。不過底層不是一個 StringBuffer 了,是 char 的數組,默認 32 個長度。
BufferedWriter
BufferedWriter 是一個緩沖的字符輸出流,為其他 Writer 提供緩沖的功能。
private void bufferedWriteDemo() throws IOException {
FileWriter fileWriter = new FileWriter("D:writer.txt", true);
try(BufferedWriter writer = new BufferedWriter(fileWriter)) {
writer.write(65);
writer.write(66);
}
fileWriter.close();
}
總結
介紹了幾種常用 Writer 輸出流的使用方式。FileWriter 用于寫入文件,BufferedWriter 自帶緩沖區,StringWriter 和 CharArrayWriter 基于內存,OutputStreamWriter 將字符流轉為字節流。
-
接口
+關注
關注
33文章
8575瀏覽量
151023 -
JAVA
+關注
關注
19文章
2966瀏覽量
104702 -
參數
+關注
關注
11文章
1829瀏覽量
32195 -
字符
+關注
關注
0文章
233瀏覽量
25199 -
Writer
+關注
關注
0文章
8瀏覽量
7313
發布評論請先 登錄
相關推薦
評論