InputStreamReader、OutputStreamReader変換ストリームの使用法
- 変換ストリーム:キャラクターストリームに属します
- InputStreamReader:入力のバイトを文字入力ストリームに変換します
- OutputStreamReader:文字入力をバイト入力ストリームに変換します
- 役割:バイトストリームとバイトストリームメイン間の変換を提供します
- エンコーディング:バイト、バイト配列を文字配列文字
列に変換デコード:文字配列、文字列をバイトに変換、バイト配列
public classInputStreamReaderTest{
@Test
public void test(){
FileInputStream fis = new FileInputStream("hello.txt");
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
char[] buf = new char[20];
int len;
while((len = isr.read(buf)) != -1){
String str = new String(buf,0,len);
System.out.println(str);
}
isr.close();
}
}
変換されたファイルの文字セット
@Test
public void test() throws IOException{
File file1 = new File("hello1");
File file2 = new File("hello1");
FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos = new FileOutputStream(file2);
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
OutPutStreamWriter osw = new OutPutStreamWriter(osw,"gbk");
char[] cbuf = new char[20];
int lenth= 0;
while((lenth = isr.read(buf)) != -1){
osw.write(cbuf,0,len);
}
isr.close();
osw.close();
}
- 例外の読み取りとスローを容易にするために、実際の開発では、try catchを最終的に使用して、リソースが確実に閉じられるようにします。
- キャラクターセット
- ASCII:1バイトの7ビットで表すことができるアメリカの標準情報交換コード
- ISO8859-1:ラテンコードテーブル、ヨーロッパコードテーブル、1バイトの8ビットで表される
- GB2313:中国の中国語エンコーディングテーブル、すべての文字をエンコードするために最大2バイト
- GBK:中国の中国語エンコーディングテーブルがアップグレードされ、最大2バイトのエンコーディングでより多くの中国語テキスト記号が組み込まれました。
- Unicode:現在人間が使用しているすべての文字を組み合わせた国際標準エンコーディングは、各文字に一意の文字コードを割り当て、すべての文字は2バイトで表されます
- UTF-8:可変長エンコード方式、1〜4バイトを使用して文字を表すことができます