InputStreamReader、OutputStreamReader変換ストリームの使用法

InputStreamReader、OutputStreamReader変換ストリームの使用法

  1. 変換ストリーム:キャラクターストリームに属します
  • InputStreamReader:入力のバイトを文字入力ストリームに変換します
  • OutputStreamReader:文字入力をバイト入力ストリームに変換します
  1. 役割:バイトストリームとバイトストリームメイン間の変換を提供します
  2. エンコーディング:バイト、バイト配列を文字配列文字
    列に変換デコード:文字配列、文字列をバイトに変換、バイト配列
public classInputStreamReaderTest{
    
    
	@Test
	public void test(){
    
    
		FileInputStream fis = new FileInputStream("hello.txt");
		//如果不指定自字符集使用默认的字符集
		//InputStreamReader isr = new InputStreamReader(fis);
		//具体使用哪个字符集,要看文件在保存的时候使用的是什么字符集
		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を最終的に使用して、リソースが確実に閉じられるようにします。
  1. キャラクターセット
  • ASCII:1バイトの7ビットで表すことができるアメリカの標準情報交換コード
  • ISO8859-1:ラテンコードテーブル、ヨーロッパコードテーブル、1バイトの8ビットで表される
  • GB2313:中国の中国語エンコーディングテーブル、すべての文字をエンコードするために最大2バイト
  • GBK:中国の中国語エンコーディングテーブルがアップグレードされ、最大2バイトのエンコーディングでより多くの中国語テキスト記号が組み込まれました。
  • Unicode:現在人間が使用しているすべての文字を組み合わせた国際標準エンコーディングは、各文字に一意の文字コードを割り当て、すべての文字は2バイトで表されます
  • UTF-8:可変長エンコード方式、1〜4バイトを使用して文字を表すことができますここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43941676/article/details/108412735