1. 字符流
在程序中一個字符等於兩個字節,Java爲我們提供了Reader和Writer兩個專門操作字符流的類
1) 字符輸出流:Writer
Writer是一個字符流,它是一個抽象類,所以要使用它,也必須通過其子類來實例化它後才能使用它。
Writer類的常用方法
方法名稱
描述
public abstract void close() throws IOException
關閉輸出流
public void write(String str) throws IOException
將字符串輸出
public void write(char cbuf) throws IOException
將字符數組輸出
public abstract void flush() throws IOException
強制性清空緩存
向一個文本文件中通過字符輸出流寫入數據
public static void main(String[] args) throws Exception {
// 聲明一個File對象
File file = new File("hellowolrd.txt");
// 聲明一個Write對象
Writer writer = null;
// 通過FileWriter類來實例化Writer類的對象並以追加的形式寫入
writer = new FileWriter(file, true);
// 聲明一個要寫入的字符串
String str = "字符串形式寫入Helloworld";
// 寫入文本文件中
writer.write(str);
// 刷新
writer.flush();
// 關閉字符輸出流
writer.close();
}
2) 字符輸入流:Reader
Reader本身也是一個抽象類,同樣,如果使用它,我們需要通過其子類來實例化它纔可以使用它。
Reader類的常用方法
方法名稱
描述
public abstract void close() throws IOException
public int read() throws IOException
public int read(char cbuf) throws IOException
在上面的基礎上把文本中的內容讀出來,並且顯示在控制檯上
public static void main(String[] args) throws Exception {
// 聲明一個File對象
File file = new File("hellowolrd.txt");
// 聲明一個Reader類的對象
Reader reader = null;
// 通過FileReader子類來實例化Reader對象
reader = new FileReader(file);
// 聲明一個字符數組
char[] c = new char[1024];
// // 將內容輸出
// int len = reader.read(c);
//循環方式一個一個讀
int len=0;
int temp=0;
while((temp=reader.read())!=-1){
c[len]=(char)temp;
len++;
}
// 關閉輸入流
reader.close();
// 把char數組轉換成字符串輸出
System.out.println(new String(c, 0, len));
}
2. 字符流與字節流的區別
操作字節流操作時本身不會用到緩衝區,是文件本身直接操作,而字節流在操作時就使用到了緩衝區。
如果我們在操作字符流的時候,不關閉流,我們寫入的數據是無法保存的。所以在操作字符流的時候一定要記得關閉流。