黑马程序员——Java基础-IO流

来源:互联网 发布:seo 刷关键词排名工具 编辑:程序博客网 时间:2024/06/15 17:35

------- android培训java培训、期待与您交流! ----------

Java中的io流

形象的理解可以类比水流,Java中io流是输送数据的方式。从不同角度进行分类有

1、根据数据流方向不同可以分为输入流(InputStream、Reader)、输出流(OutputStream、Writer)

2、根据数据流单位不同可以分为字节流(InputStream、OutputStream)、字符流(Reader、Writer)。

3、根据是否使用缓冲技术可以分为节点流(InputStream、OutputStream、Reader、Writer)、处理流(BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter)

 

流的操作规律

最痛苦的就是流对象有很多,不知道该用哪个

通过三个明确来完成

1、明确源和目的

源:输入流,InputStream、Reader

目的:输出流,OutputStream、Writer

2、操作的数据是否是纯文本

是:字符流Reader、Writer

不是:字节流 InputStream、OutputStream

3、当体系明确后,再明确要使用哪个具体的对象

通过设备来进行区分

源设备

键盘     system.in    硬盘     File    内存    ByteArrayInputStream

目的设备

控制台   system.out 硬盘     File     内存   ByteArrayOutputStream

4、最后一般都加入缓冲技术转变为处理流,主要是避免频繁访问硬盘提高数据访问效率。处理流中的字节处理流(BufferedInputStream、BufferedOutputStream)较少用,通过转换方法可以使得字节流和字符流之间能相互转化,InputStreamReader是字节流向字符流转换的桥梁,OutputStreamWriter是字符流转换成字节流的桥梁。

IO流练习代码

import java.io.*;class TransStream{     public static void main(String[] args)throws IOException     {          //定义获取键盘输入对象          InputStream in=System.in;                   //将获取键盘输入对象转换成字符流对象          InputStreamReader isr=new InputStreamReader(in);                   //定义字符流对象的缓冲区          BufferedReader bufr=new BufferedReader(isr);          //BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//以上三句合成一句                             BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));//新建处理流对象,简化书写          String line=null;          while((line=bufr.readLine())!=null)//获取键盘输入          {               if(line.equals("over"))//自定义输入结束标志                    break;               bufw.write(line.toUpperCase());//将输入字符转换为大写输出               bufw.newLine();//输出换行               bufw.flush();//把缓冲区的内容刷出来          }                        bufr.close();//关闭输入流          bufw.close();//关闭输出流     }}



0 0
原创粉丝点击