java複習第8天---8.2---IO流---字符流

java複習第8天---8.2---IO流---字符流


目錄




內容

1、概述

  當使用字符流讀取文本文件時,可能會有問題。遇到中文字符時,不能不會顯示完整的字符,因爲一箇中文字符可能佔用多個字符存儲。所以java提供字符流,以字符爲單位,專門處理文本文件。

2、Reader

  字符輸入流父類,常用方法:

修飾符 返回值類型 方法名 參數列表 描述
public void close 關閉此輸入流並釋放與此輸入流向關聯的系統資源
public abstract int read 從輸入流中讀取一個字符數據
public int read char[] cbuf 從輸入流中讀取b.length個字符的數據存入指定字符數組cbug中,返回實際讀取的字符數

2.1、FileReader

  文件字符輸入流。

  • 常用構造方法
參數列表 描述
File file 通過打開與實際文件的連接創建一個 FileReader ,該文件由文件系統中的 File對象 file命名。
String name 通過打開與實際文件的連接來創建一個 FileReader ,該文件由文件系統中的路徑名 name命名。
  • 示例1.2.1-1:讀取a.txt中的內容並顯示

      package io.stream.reader.fileReader;
    
      import java.io.FileNotFoundException;
      import java.io.FileReader;
      import java.io.IOException;
    
      public class TestFileReader1 {
      	public static void main(String[] args) throws IOException {
      		String source = "f:\\test\\a.txt";
    
      		FileReader fr = new FileReader(source);
    
      		char[] buf = new char[1024];
      		int len;
      		while((len = fr.read(buf)) != -1) {
      			System.out.println(new String(buf, 0, len));
      		}
    
      		fr.close();
      	}
      }
      測試結果:
      歡迎入坑JAVA!《JAVA從入門到放棄》
      《JAVA從入門到放棄》
    

3、Writer

  Outputstream爲字符輸出流的父類,把信息傳輸到指定位置,提供基本的功能方法:

修飾符 返回值類型 方法名 參數列表 描述
public void close 關閉此輸出流並釋放與此流相關的系統資源
public void flush 刷新輸出流並強制任何緩衝區字符寫出
public void write byte[] b 把b.length字符從指定的字符數組寫入此輸出流
public void write byte[] b, int off, int len 把len字符從指定字符數組b的偏移量off處開始寫入此輸出流
public abstract void write int len 將指定的字符寫入此輸出流

3.1、FileWriter

  FileOutputStream 文件字符輸出流,用於數據寫入文件當中。

  • 常用構造方法
參數類別 描述
File file 創建文件輸出流到以寫入File對象對應的文件中
File file, boolean append 創建文件輸出流以追加方式寫入由指定的 File對象表示的文件
String name 創建文件輸出流以寫入指定名稱的文件
String name, boolean append 創建文件輸出流以追加方式寫入指定名稱的文件
  • 使用步驟

    1. 創建文件輸出流對象,指定寫入文件
    2. 調用write方法把數據寫入文件
    3. 調用close方法關閉輸出流釋放相關的系統資源
  • 示例3.1-1:把指定內容輸入d.txt中,內容:"+ 使用步驟

    1. 創建文件輸出流對象,指定寫入文件
    2. 調用write方法把數據寫入文件
    3. 調用close方法關閉輸出流釋放相關的系統資源"
  • 代碼3.1-1:

      package io.stream.reader.fileWriter;
    
      import java.io.FileWriter;
      import java.io.IOException;
    
      public class TestFileWriter1 {
      	public static void main(String[] args) throws IOException {
      		String path = "f:\\test\\d.txt";
    
      		FileWriter fw = new FileWriter(path);
    
      		String txt = "+ 使用步驟\r\n" + 
      				"	1. 創建文件輸出流對象,指定寫入文件\r\n" + 
      				"	2. 調用write方法把數據寫入文件\r\n" + 
      				"	3. 調用close方法關閉輸出流釋放相關的系統資源";
    
      		fw.write(txt.toCharArray());
      		fw.close();
    
      	}
      }
      測試結果:自己測試
    

4、字符流文本複製

  • 需求:把d.txt 文件內容複製到e.txt中

  • 代碼4-1:

      package io.stream.charStream;
    
      import java.io.FileReader;
      import java.io.FileWriter;
      import java.io.IOException;
    
      public class FileCopy {
      	public static void main(String[] args) throws IOException {
      		String source = "f:\\test\\d.txt";
      		String dest = "f:\\test\\e.txt";
    
      		fileCopy(source, dest);
      	}
    
      	public static void fileCopy(String source, String dest) throws IOException {
      		FileReader fis = new FileReader(source);
      		FileWriter fos = new FileWriter(dest);
    
      		char[] b = new char[1024];
      		int len;
    
      		while((len = fis.read(b)) != -1) {
      			fos.write(b, 0, len);
      		}
    
      		fis.close();
      		fos.close();
      	}
      }
      測試結果:
      d.txt
      	+ 使用步驟
      		1. 創建文件輸出流對象,指定寫入文件
      		2. 調用write方法把數據寫入文件
      		3. 調用close方法關閉輸出流釋放相關的系統資源
    
      e.txt
      	+ 使用步驟
      		1. 創建文件輸出流對象,指定寫入文件
      		2. 調用write方法把數據寫入文件
      		3. 調用close方法關閉輸出流釋放相關的系統資源
    

後記

本項目爲參考某馬視頻開發,相關視頻及配套資料可自行度娘或者聯繫本人。上面爲自己編寫的開發文檔,持續更新。歡迎交流,本人QQ:806797785

前端項目源代碼地址:https://gitee.com/gaogzhen/vue-leyou
    後端JAVA源代碼地址:https://gitee.com/gaogzhen/JAVA

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章