字元流讀中文和位元組流
package Reader;
import java.io.FileInputStream;
import java.io.IOException;
/*
使用位元組流讀取中文檔案
1箇中文
GBK:佔用兩個位元組
UTF-8:佔用3個位元組
*/
public class Demo01InputStream {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("09_IOAndProperties\c.txt");//你好
int len = 0;
while((len = fis.read())!=-1){
System.out.println((char)len);//讀中文亂碼一次讀1/3個字元
}
fis.close();
}
}
package com.itheima.Demo04.Reader;
import java.io.FileReader;
import java.io.IOException;
/*
java.io.Reader:字元輸入流,是字元輸入流的最頂層的父類,定義了一些共性的成員方法,是一個抽象類
共性的成員方法: int read() 讀取單個字元並返回。 int read(char[] cbuf)一次讀取多個字元,將字元讀入陣列。 void close() 關閉該流並釋放與之關聯的所有資源。 java.io.FileReader extends InputStreamReader extends Reader FileReader:檔案字元輸入流 作用:把硬碟檔案中的資料以字元的方式讀取到記憶體中 構造方法: FileReader(String fileName) FileReader(File file) 引數:讀取檔案的資料來源 String fileName:檔案的路徑 File file:一個檔案 FileReader構造方法的作用: 1.建立一個FileReader物件 2.會把FileReader物件指向要讀取的檔案 字元輸入流的使用步驟: 1.建立FileReader物件,構造方法中繫結要讀取的資料來源 2.使用FileReader物件中的方法read讀取檔案 3.釋放資源
/
public class Demo02Reader {
public static void main(String[] args) throws IOException {
//1.建立FileReader物件,構造方法中繫結要讀取的資料來源
FileReader fr = new FileReader("09_IOAndProperties\c.txt");
//2.使用FileReader物件中的方法read讀取檔案
//int read() 讀取單個字元並返回。
/int len = 0;
while((len = fr.read())!=-1){
System.out.print((char)len);
}*/
//int read(char[] cbuf)一次讀取多個字元,將字元讀入陣列。
char[] cs = new char[1024];//儲存讀取到的多個字元
int len = 0;//記錄的是每次讀取的有效字元個數
while((len = fr.read(cs))!=-1){
/*
String類的構造方法
String(char[] value) 把字元陣列轉換為字串
String(char[] value, int offset, int count) 把字元陣列的一部分轉換為字串 offset陣列的開始索引 count轉換的個數
*/
System.out.println(new String(cs,0,len));
}
//3.釋放資源
fr.close();
}
}