【java】IO流

原创 2015年11月17日 20:38:47

         对于java的IO流的理解很长时间来都是很乱,包括学习其他的语言对这一块知识也都算是一个盲点.更多的时候一提到读取保存数据就是使用数据库。这一次学习了IO流,自己又解决了一个很大的盲点。

         IO流为我们提供了这样一种方案,就是把我们的数据保存到文件中,或者从文件中读取我们的数据。IO流为我们提供了一条通道程序,可以使用这条通道把源中的字节序列送到目的地.源可以是文件、网络、压缩包或者其他数据源。

 

IO流分类

1.      按流的方向分为输入流和输出流

2.      按流的数据单位分为字节流和字符流

3.      按功能分为字节流和处理流

 

节点流

节点流可以从一特定的数据源读写数据.



处理流

处理流是”连接”在已存在的流(节点流或处理流)之上.为对数据的处理提供更强大的读写功能.


 



        关于节点就和处理流.就好比给了我们一桶水,我们需要一条水管将水引出来,这条水管就是节点流.但是流出来的水我们一看是不太干净,所以我们需要一个净化器,这个净化器就是处理流。

 

 IO流的四大抽象类

InputStream:继承自InputStream的流都是用于向程序中输入数据。且数据的单位为字节(8bit)

outputSteam:与inputStream相似,用来输出数据。

Reader:继承自Reader的流都是用于向程序中输入数据,数据单位为字符(16 bit)

Write:与Reader相似,用于输出数据.

 

 

缓冲流

       上面的输入输出流一次只能读取一个字节或者字符.如果我有1024个字节要读取,那么我要进行1024次操作。可以想象如果文件十分庞大这样的操作肯定会先很大的问题。基于这种问题,引出了缓冲流的概念。缓冲流就好比在水管后又加了一个水盆。

 

数据流

         当我们需要读取java的一些基本类型的时候,如果使用inputStream和OutputStream会不断的进行转换。比如我们读取一个long类型的值(long类型占8个字节)时,读取很多次。此时数据流就为我们提供了这样一种操作。那就是直接读取这数值。

 

对象流

         对象流就是把一个Object直接转换成字节流写到硬盘上或者网络上.这种操作叫做序列化.

 

几个小例子

  1.第一个例子,演示了FileInputStream和FileOutStream的使用,该例子实现的是将a.txt中的文本复制一份到b.txt中去。

    read()方法一次只能读取一个字节。使用当返回值为-1时表示已经读到了文本的末尾。

使用输入输出流要注意异常的处理。此处处理了两个异常

public static void main(String[] args) {
        int b=0;
        FileInputStream in=null;
        FileOutputStream out=null;
         try
         {
             in=new FileInputStream("G:/a.txt");
             out =new FileOutputStream("G:/b.txt");
             while((b=in.read())!=-1)
             {
                 out.write(b);
             }
             in.close();
             out.close();
         }
         catch(FileNotFoundException e2)
         {
             System.out.println("没有发现文件");
             System.exit(-1);
         }
          catch(IOException e1)
         {
             System.out.println("文件复制错误");
             System.exit(-1);
         }
         System.out.println("文件以复制");
    }
2.第二个例子展示了缓冲流的使用 使用缓冲流时readLine()方法一次可以读取一行数据.

  此处有个强制类型转换.要注意,不然输出的会是ASCII码.

 public static void main(String[] args) {
       try
       {
           FileReader fis=new FileReader("G:/a.txt");
          BufferedReader bis=new BufferedReader(fis);
           int c=0;
           System.out.println(bis.readLine());//读取一行字符串
           for(int i=1;i<=3&&(c=bis.read())!=-1;i++)
           {
               System.out.print((char)c+"");//强制类型转换,不然输出的是ASCII码
           }
           System.out.println();
          bis.close();
       }
       catch(IOException e)
       {
           e.printStackTrace();
       }
    }

总结

     IO流的带给了我另一种保存数据的方式,以前保存数据,就只会想到数据库.而现在我们又多了一种新的方式.对于IO流重要的是要理解字节流和处理流这两个概念.字节流负责把数据从数据源提取出来(或者将数据保存到文档中),而处理流是要对数据进行处理,其中有缓冲流,数据流和对象流,针对不同的使用环境我们要甄别使用,处理流可以重叠使用.然后理解了四个抽象类以及他们的方法.掌握了这些对于IO流的理解就算是基本入门了。

      

 

版权声明:那些你不愿意做的事情才能让你真正成长

《JAVA_IO流学习总结》

  • 2017年11月27日 09:39
  • 857KB
  • 下载

Java IO流读取文件

一、使用字符流,读取和存储纯文本文件。        存储文件,也就是像一个文件里写内容,既然是写,那就需要使用输出流。而且我们写的是纯文本文件,所以这里使用字符流来操作,java api提供给...

第4章 Java的IO流和异常处理.ppt

  • 2014年10月14日 21:12
  • 1.41MB
  • 下载

Java学习笔记之IO流

  • 2016年08月11日 07:36
  • 15KB
  • 下载

Java IO流之拷贝(复制)文件

在android中使用最多的就是ListView,GridView,用到这两个控件那么肯定要用到适配器,那就是定义一个类继承BaseAdapter,让后覆写它里面的getCount(),getView...

java IO 流

  • 2012年07月16日 12:52
  • 268KB
  • 下载

java_io 流介绍

  • 2013年08月02日 00:04
  • 48KB
  • 下载

Java-IO之BufferedReader(字符缓冲输入流)

BufferedReader是缓冲字符输入流,继承于Reader,BufferedReader的作用是为其他字符输入流添加一些缓冲功能。 BufferedReader主要的函数列表: ...

java IO流的运用

  • 2013年04月12日 16:48
  • 2MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【java】IO流
举报原因:
原因补充:

(最多只允许输入30个字)