IO中的BufferedWriter和BufferedReader以及讀取時(shí)出現(xiàn)亂碼的問(wèn)題
1. BufferedWriter作用:
將文本寫(xiě)入字符輸出流躏筏,緩沖各個(gè)字符,從而提供單個(gè)字符唐础、數(shù)組和字符串的高效寫(xiě)入。
其有哪些方法:
close()? :? ? 關(guān)閉此流,但要先刷新它。
flush() :? ? ? 刷新該流的緩沖藻茂。
newLine() :? 寫(xiě)入一個(gè)行分隔符。
write(char[] cbuf, int off, int len)? :? ? 寫(xiě)入字符數(shù)組的某一部分。
write(int c)? :? ?寫(xiě)入單個(gè)字符捌治。
write(String s, int off, int len) :? 寫(xiě)入字符串的某一部分岗钩。
2.?BufferedReader作用:
讀取文本文件 ,會(huì)先盡量從文件中讀入字符數(shù)據(jù)并置入緩沖區(qū),而之后若使用read()方法肖油,會(huì)先從緩沖區(qū)中進(jìn)行讀取。
實(shí)戰(zhàn)代碼:
public class Test{
? ? public static void main(String[] args) throws Exception{
? ? ? ? //BufferedWriter將字符寫(xiě)入到文件中
? ? ? ? FileWriter fw =new FileWriter("E:\\Buffered.txt");//創(chuàng)建一個(gè)文件
? ? ? ? BufferedWriter bufw =new BufferedWriter(fw);
? ? ? ? bufw.write("hello world");
? ? ? ? bufw.newLine(); //作用是換行
? ? ? ? bufw.write("this is test");
? ? ? ? bufw.newLine();
? ? ? ? bufw.write("你好,這里是測(cè)試!");
? ? ? ? bufw.flush();
? ? ? ? bufw.close();
? ? ? ? //讀取文件,然后進(jìn)行轉(zhuǎn)碼,防止出現(xiàn)亂碼的問(wèn)題
? ? ? ? InputStreamReader isr =new InputStreamReader(new FileInputStream("E:\\Buffered.txt"), "UTF-8");
? ? ? ? //創(chuàng)建字符緩沖輸入流對(duì)象
? ? ? ? BufferedReader br =new BufferedReader(isr);
? ? ? ? //讀數(shù)據(jù)
//一次讀取一個(gè)字符數(shù)組
? ? ? ? char[] chs =new char[1024];
? ? ? ? int len =0;
? ? ? ? while ((len = br.read(chs)) != -1) {
? ? ? ? ? ? System.out.println(new String(chs, 0, len));
? ? ? ? }
? ? ? ? //釋放資源
? ? ? ? br.close();
? ? }
? ? }
運(yùn)行結(jié)果:
去E盤(pán)查看是否有創(chuàng)建了這個(gè)文件:
可以看到,我們已經(jīng)成功創(chuàng)建了這個(gè)文件!!!