首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java学习札记:关于IO转换流InputStreamReader和OutputStreamWriter

2012-10-06 
java学习笔记:关于IO转换流InputStreamReader和OutputStreamWriter1 字节流InputStream? ? ? ? ? ? ?? ? -

java学习笔记:关于IO转换流InputStreamReader和OutputStreamWriter

1 字节流
InputStream ? ? ? ? ? ? ?? ? ->FileInputStream
OutputStream ? ? ? ? ? ?? ? ?->FileOutputStream


2 字符流
Reader -> BufferedReader ? ? -> LineNumberReader?
? ? ? ?-> InputStreamReader ?-> FileReader

Writer -> BufferedWriter
? ? ? ?-> OutputStreamWriter -> FileWriter

============================================================
由JDK的IO流继承结构我们看到
FileInputStream和FileOutputStream是直接继承自字节流基类的

而FileReader和FileWriter是继承自2个转换流,
为什么会这样呢?
很可能是因为FileReader和FileWriter都是对字符型文件的操作,
而计算机处理的是字节数据,
读取文件后要将字符对象转成字节对象,
在写入到文件时时要将字节对象转成字符对象

?

?

?

?


java学习札记:关于IO转换流InputStreamReader和OutputStreamWriter

?

/*[示例1]:按行读写控制台中的字符*/import java.io.*;class Demo            {  public static void main(String[] args)  throws IOException  {    readAndWriteCmd();  }   public static void readAndWriteCmd() throws IOException  {    //1.获取键盘输入的字节流对象    InputStream in = System.in;        //2.将字节流对象转成字符流对象,使用转换流InputStreamReader    InputStreamReader isr = new InputStreamReader(in);  //in字节流就变成isr字符流了        //3.为了提高效率,使用字符缓冲流BufferedReader    BufferedReader bufr = new BufferedReader(isr);        OutputStream output = System.out;      OutputStreamWriter osw = new OutputStreamWriter(output);      BufferedWriter bufw= new BufferedWriter(osw);  //因为要用到换行newLine()        //4.然后就可以使用BufferedReader的readLine方法一次读取一行,读了再写到cmd里    String lineStr=null;    while(true)    {      lineStr = bufr.readLine();    //读取我们从键盘输入到控制台的内容      if(lineStr!=null)      {        if(lineStr.equals("over"))   //输入over时结束        {          break;        }        else        {          bufw.write(lineStr); //写到控制台          bufw.newLine();      //输出换行符,在windows里也可直接输出"\r\n"          bufw.flush();        //清空缓冲区,否则下一次输出时会重复输出          }            }      else      {        break;      }    }          }}

?========================================================================================

?

/*将上个例子的输出设备改成硬盘文件[示例2]:将键盘输入控制台的字符输出到文本文件*/import java.io.*;class Demo            {  public static void main(String[] args)  throws IOException  {    readAndWriteCmd();  }   public static void readAndWriteCmd() throws IOException  {    BufferedReader bufr= new BufferedReader(new InputStreamReader(System.in));    //BufferedWriter bufw= new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:\\out.txt")));     BufferedWriter bufw= new BufferedWriter(new FileWriter("c:\\out.txt"));         String lineStr=null;    while(true)    {      lineStr = bufr.readLine();    //读取我们从键盘输入到控制台的内容      if(lineStr!=null)      {        if(lineStr.equals("over"))  //输入over时结束        {          break;        }        else        {          bufw.write(lineStr);           bufw.newLine();      //输出换行符,在windows里也可直接输出"\r\n"          bufw.flush();        //清空缓冲区,否则下一次输出时会重复输出          }            }      else      {        break;      }    }          }}
?

                   :arrow
[*]

[*]

    

热点排行