InputStreamReaderとOutputStreamWriter変換ストリーム

3972 ワード

InputStreamReader(読み取り)、OutputStreamWriter(書き込み)
指定したcharsetを使用してバイトを読み取り、文字に復号するバイトフローへのブリッジです.使用する文字セットは、名前で指定または表示できます.そうしないと、プラットフォームのデフォルトの文字セットを受け入れることができます.
主にバイトストリームから文字ストリームへの変換、および符号化された読み出しおよび書き込みデータを指定するために使用されます.注意符号化が指定されていない場合は、開発プラットフォームのデフォルト符号化が使用されます.
主な方法:
1.構造方法InputStreamReader(InputStream in): InputStreamReader。 InputStreamReader(InputStream in,Charset cs): InputStreamReader。 String charsetName Charset cs OutputStreamWriter(OutputStream out): OutputStreamWriter。 OutputStreamWriter(OutputStream out,Charset cs): OutputStreamWriter。 String charsetName Charset cs
2.その の String getEncoding()  。 int read()は、1つの を み みます.    void  write(int c)  。 int read(char[] cbuf, int offset, int length)  。 void write(char[] cbuf, int off, int len)   。
コードのデモ:
バイトストリームを ストリームに
// 
	@Test
	public void demo1() throws IOException{
		// , (System.in)InputStream BufferReader 。
		InputStreamReader isr=new InputStreamReader(System.in);
		BufferedReader br=new BufferedReader(isr);	// , , 
		// , FileOutputStream BufferedWriter 
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b.txt")));
		String str=null;
		while((str=br.readLine())!=null){
			if(str.equalsIgnoreCase("over")){
				break;
			}
			System.out.println(str.toUpperCase());
			bw.write(str);
			bw.write("
"); } isr.close(); br.close(); bw.close(); }
:
zi jie liu dao zi Fu liu de mo zhuan huan
ZI JIE LIU DAO ZI FU LIU DE MO ZHUAN HUAN
over
プラットフォームのデフォルト による み き
// 
	@Test
	public void demo2() throws IOException{
		OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(" .txt"));
		osw.write(" ");  // MyEclipse utf_8;
		osw.close();
	
		InputStreamReader isr=new InputStreamReader(new FileInputStream(" .txt"));
		BufferedReader br=new BufferedReader(isr);
		String str=null;
		while((str=br.readLine())!=null){
			System.out.println(str);
		}
		isr.close();
		br.close();
	}
 

でコードを して み きする
// 
	@Test
	public void demo4() throws IOException{
		OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("gbk.txt"),"gbk");
		osw.write(" gbk ");
		osw.write("
"); osw.write(" gbk "); osw.write("
"); osw.close(); InputStreamReader isr=new InputStreamReader(new FileInputStream("gbk.txt"),"gbk"); char b[]=new char[8]; int len=0; while((len=isr.read(b))!=-1){ String str=new String(b,0,len); System.out.print(str); } OutputStreamWriter osw2=new OutputStreamWriter(new FileOutputStream("utf8.txt"),"utf-8"); osw2.write("
"); osw2.write(" utf-8 "); osw2.write("
"); osw2.write(" utf-8 "); osw2.write("
"); osw2.close(); InputStreamReader isr2=new InputStreamReader(new FileInputStream("utf8.txt"),"utf-8"); char b2[]=new char[8]; int len2=0; while((len2=isr2.read(b2))!=-1){ String str=new String(b2,0,len2); System.out.print(str); } }

 gbk 
 gbk 

 utf-8 
 utf-8