InputStreamReader類
轉換流
java.io.InputStreamReader
,是Reader的子類,是從位元組流到字元流的橋梁。它讀取位元組,并使用指定的字元集将其解碼為字元。它的字元集可以由名稱指定,也可以接受平台的預設字元集。
構造方法
-
: 建立一個使用預設字元集的字元流。InputStreamReader(InputStream in)
-
: 建立一個指定字元集的字元流。InputStreamReader(InputStream in, String charsetName)
構造舉例,代碼如下:
InputStreamReader isr = new InputStreamReader(new FileInputStream("in.txt"));
InputStreamReader isr2 = new InputStreamReader(new FileInputStream("in.txt") , "GBK");
指定編碼讀取
public class ReaderDemo2 {
public static void main(String[] args) throws IOException {
// 定義檔案路徑,檔案為gbk編碼
String FileName = "E:\\file_gbk.txt";
// 建立流對象,預設UTF8編碼
InputStreamReader isr = new InputStreamReader(new FileInputStream(FileName));
// 建立流對象,指定GBK編碼
InputStreamReader isr2 = new InputStreamReader(new FileInputStream(FileName) , "GBK");
// 定義變量,儲存字元
int read;
// 使用預設編碼字元流讀取,亂碼
while ((read = isr.read()) != -1) {
System.out.print((char)read); // ��Һ�
}
isr.close();
// 使用指定編碼字元流讀取,正常解析
while ((read = isr2.read()) != -1) {
System.out.print((char)read);// 大家好
}
isr2.close();
}
}
OutputStreamWriter類
轉換流
java.io.OutputStreamWriter
,是Writer的子類,是從字元流到位元組流的橋梁。使用指定的字元集将字元編碼為位元組。它的字元集可以由名稱指定,也可以接受平台的預設字元集。
構造方法
-
: 建立一個使用預設字元集的字元流。OutputStreamWriter(OutputStream in)
-
: 建立一個指定字元集的字元流。OutputStreamWriter(OutputStream in, String charsetName)
構造舉例,代碼如下:
OutputStreamWriter isr = new OutputStreamWriter(new FileOutputStream("out.txt"));
OutputStreamWriter isr2 = new OutputStreamWriter(new FileOutputStream("out.txt") , "GBK");
指定編碼寫出
public class OutputDemo {
public static void main(String[] args) throws IOException {
// 定義檔案路徑
String FileName = "E:\\out.txt";
// 建立流對象,預設UTF8編碼
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(FileName));
// 寫出資料
osw.write("你好"); // 儲存為6個位元組
osw.close();
// 定義檔案路徑
String FileName2 = "E:\\out2.txt";
// 建立流對象,指定GBK編碼
OutputStreamWriter osw2 = new OutputStreamWriter(new FileOutputStream(FileName2),"GBK");
// 寫出資料
osw2.write("你好");// 儲存為4個位元組
osw2.close();
}
}