【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流

  • 2016-08-11 07:36
  • 15KB
  • 下载

『黑马程序员』---java--IO--对象序列化-管道流

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 直接操作对象的流(对象的持久化,序列化,可串行性) Obje...

JAVA_IO流学习总结

  • 2014-06-24 09:24
  • 1.01MB
  • 下载

Java中的IO流类详解

  • 2014-11-15 08:02
  • 640KB
  • 下载

Java基础:IO流之File类

一、File类概述文件和目录路径名的抽象表示形式1、构造方法 方法 功能描述 File(String pathname) 根据路径得到File对象 File(String paren...

java IO 流

  • 2012-07-16 12:52
  • 268KB
  • 下载

java_io 流介绍

  • 2013-08-02 00:04
  • 48KB
  • 下载

java学习笔记-IO流

一、流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。 一个流,必有源端...

java IO流的运用

  • 2013-04-12 16:48
  • 2.00MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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