zoukankan      html  css  js  c++  java
  • Java基础学习(三) IO

    Java IO概要

      Java中使用IO(输入输出)来读取和写入,读写设备上的数据、硬盘文件、内存、键盘......,根据数据的走向可分为输入流和输出流,这个走向是以内存为基准的,即往内存中读数据是输入流,从内存中往外写是输出流。  

    Java IO常见类

             

      根据处理的数据类型可分为字节流和字符流  

        1.字节流可以处理所有数据类型的数据,在java中以Stream结尾  

        2.字符流处理文本数据,在java中以Reader和Writer结尾。

        在整个Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader;

    一个接口指的是Serializable.掌握了这些IO的核心操作那么对于Java中的IO体系也就有了一个初步的认识了。

     

    Java I/O主要包括如下几个层次,包含三个部分:

       1.流式部分――IO的主体部分;

        2.非流式部分――主要包含一些辅助流式部分的类,如:File类、RandomAccessFile类和FileDescriptor等类;

        3.其他类--文件读取部分的与安全相关的类,如:SerializablePermission类,以及与本地操作系统相关的文件系统的类,如:FileSystem类和Win32FileSystem类和WinNTFileSystem类。

       主要的类如下:

           1. File(文件特征与管理):用于文件或者目录的描述信息,例如生成新目录,修改文件名,删除文件,判断文件所在路径等。

           2. InputStream(二进制格式操作):抽象类,基于字节的输入操作,是所有输入流的父类。定义了所有输入流都具有的共同特征。

           3. OutputStream(二进制格式操作):抽象类。基于字节的输出操作。是所有输出流的父类。定义了所有输出流都具有的共同特征。

           4.Reader(文件格式操作):抽象类,基于字符的输入操作。

           5. Writer(文件格式操作):抽象类,基于字符的输出操作。

           6. RandomAccessFile(随机文件操作):一个独立的类,直接继承至Object.它的功能丰富,可以从文件的任意位置进行存取(输入输出)操作

    JavaIO流的体系结构如图

       

    Java流类图:

      

      流: 一组有顺序的、有起点和终点的数据集合,如文件流、网络流

      流与文件的区别:文件是数据的静态存储方法。流是数据在传输时的一种形态。java 对数据的操作都是通过流的方式,java 用于操作流的对象都在IO包中。

      流按操作数据分为:字节流(InputStream、OutputStream) 和 字符流(Reader、Writer)。其他所有的IO操作的类都是有它 们派生出来的。凡是属于字节流的 都是以 InputStream , OutputStream 为结尾,比如 FileInputStream, FileOutputStream 等。凡是属于字符流的,都是以 Reader , Writer 为结尾 比如 FileReader, PrintWriter 等

      总结,什么时候该使用字符流,什么时候又该使用字节流呢? 仔细想想就应该知道,所谓字符流,肯定是用于操作类似文本文件或者带有字符文件的场合比较多 。而字节流则是操作那些无法直接获取文本信息的二进制文件,比如图片,mp3,视频文件等 说白了在硬盘上都是以字节存储的,只不过字符流在操作文本上面更方便一点而已 。此外,为什么要利用缓冲区呢? 我们知道,像迅雷等下载软件都有个缓存的功能,硬盘本身也有缓冲区 。试想一下,如果一有数据,不论大小就开始读写,势必会给硬盘造成很大负担,它会感觉很不爽 人不也一样,一顿饭不让你一次吃完,每分钟喂一勺,你怎么想?因此,采用缓冲区能够在读写大文件的时候有效提高效率。

      此处只是对IO做个简单的介绍,详细的内容大家可以参考《Think in Java》。

       更多IO参考:https://blog.csdn.net/nightcurtis/article/details/51324105

            https://blog.csdn.net/zhaoyanjun6/article/details/54292148

      ·       https://www.cnblogs.com/runningTurtle/p/7088125.html

    多写代码多读书,做个安静的Coder。

  • 相关阅读:
    架构设计
    Asp.net MVC突然变慢,缓存消失的一种原因
    B2C电子商务系统研发——商品SKU分析和设计(二)
    ASP.NET MVC下基于异常处理的完整解决方案
    【C#.NET】利用FastDFS打造分布式文件系统
    C#
    50个必备的实用jQuery代码段
    可视化组件库(The Visual Component Library)
    TortoiseHg 2.2.2
    企业信息开发平台
  • 原文地址:https://www.cnblogs.com/KaKa-King/p/9553626.html
Copyright © 2011-2022 走看看