java层面看什么是IO

 一.什么是IO

IO就是    将磁盘中的数据转换成数据流读到内存

               将内存中的数据转换成数据流写到磁盘

  Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。  

      Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO。

  流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。 
      Java IO模型  :
      Java的IO模型设计非常优秀,它使用Decorator模式,按功能划分Stream,您可以动态装配这些Stream,以便获得您需要的功能。例如,您需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。 

二:数据流的基本概念

在电脑上的数据有三种存储方式,一种是外存,一种是内存,一种是缓存。比如电脑上的硬盘,磁盘,U盘等都是外存,在电脑上有内存条,缓存是在CPU里面的。外存的存储量最大,其次是内存,最后是缓存,但是外存的数据的读取最慢,其次是内存,缓存最快。这里总结从外存读取数据到内存以及将数据从内存写到外存中。对于内存和外存的理解,我们可以简单的理解为容器,即外存是一个容器,内存又是另外一个容器。那又怎样把放在外存这个容器内的数据读取到内存这个容器以及怎么把内存这个容器里的数据存到外存中呢?

     网络java中将输入输出抽象称为流,就好像水管,将两个容器连接起来。将数据从外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。

总结:数据流就是一组有序,有起点和终点的字节或字符的数据序列。包括输入流和输出流。

三:如何选择使用哪种流

是硬盘文件:File++:

             读取:FileInputStream,, FileReader, 

              写入:FileOutputStream,FileWriter
是内存用数组

                  byte[]:ByteArrayInputStream, ByteArrayOutputStream
                  是char[]:CharArrayReader, CharArrayWriter
是String:StringBufferInputStream(已过时,因为其只能用于String的每个字符都是8位的字符串),                    StringReader, StringWriter
是网络:    用Socket流

是键盘:   用System.in(是一个InputStream对象)读取,用System.out(是一个OutoutStream对象)打印

猜你喜欢

转载自blog.csdn.net/weixin_70280523/article/details/131472690
今日推荐