IO—转换流

来源:互联网 发布:网络手势图片意思 编辑:程序博客网 时间:2024/06/07 00:07

Java学习—IO—转换流


    转换流是指将字节流与字符流之间的转换,包含两个类:InputStreamReader和OutputStreamWriter。

    转换流的出现方便了对文件的读写,她在字符流与字节流之间架起了一座桥梁,使原本毫无关联的两种流操作能够进行转化,提高了程序的灵活性。

    InputStreamReader的构造操作:

InputStreamReader(InputStream in)
          创建一个使用默认字符集的 InputStreamReader。

InputStreamReader(InputStream in,Charset cs)
          创建使用给定字符集的 InputStreamReader。

InputStreamReader(InputStream in,CharsetDecoder dec)
          创建使用给定字符集解码器的 InputStreamReader。

InputStreamReader(InputStream in,String charsetName)
          创建使用指定字符集的 InputStreamReader。

 

    InputStreamReader的相关操作:

 void

close() 
          关闭该流并释放与之关联的所有资源。

 String

getEncoding() 
          返回此流使用的字符编码的名称。

 int

read() 
          读取单个字符。

 int

read(char[] cbuf, int offset, int length)
          将字符读入数组中的某一部分。

 boolean

ready() 
          判断此流是否已经准备好用于读取。

    OutputStreamWriter的构造

OutputStreamWriter(OutputStream out)
          创建使用默认字符编码的 OutputStreamWriter。

OutputStreamWriter(OutputStream out,Charset cs)
          创建使用给定字符集的 OutputStreamWriter。

OutputStreamWriter(OutputStream out,CharsetEncoder enc)
          创建使用给定字符集编码器的 OutputStreamWriter。

OutputStreamWriter(OutputStream out,String charsetName)
          创建使用指定字符集的 OutputStreamWriter。

 

方法摘要

 void

close() 
          关闭此流,但要先刷新它。

 void

flush() 
          刷新该流的缓冲。

 String

getEncoding() 
          返回此流使用的字符编码的名称。

 void

write(char[] cbuf, int off, int len)
          写入字符数组的某一部分。

 void

write(int c) 
          写入单个字符。

 void

write(String str, int off, int len)
          写入字符串的某一部分。

    示例如下:

package com.abin;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

public class InputStreamReaderDemo {

    public static void main(String[] args) throws IOException {

        //获取标准输入流

        InputStreamin = System.in;

        //将字节流转换为字符流

        InputStreamReaderisr = new InputStreamReader(in);

        //将字符流装饰

        BufferedReaderbr = new BufferedReader(isr);

        Stringstring =null;

        while ((string=br.readLine())!=null) {

            if ("over".equals(string)) {

                break;

            }

            System.out.println(string.toUpperCase());

        }

    }

}

0 0