概念:Java中对文件的操作是以流的方式进行的。流是Java内存中的一组有序数据序列。Java将数据从源(文件、内存、键盘、网络)读入到内存中,形成了流,然后将这些流还可   以写到另外的目的地(文件、内存、控制台、网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分。

理解:流, 可以看成是一根管道, 用来读取文件的数据原始的数据都是用过二进制的形式来进行数据的传输

In/Out流

  流的分类

      按照数据流的方向

         输入流(Input), 输出流(Output)

         输入流: 从文件往程序走数据

      输出流: 从程序往文件走数据

     按照处理数据的单位不同:

       八大数据类型所占字节数:

           byte(1), short(2), int(4), long(8)

        float(4), double(8)

      boolean(1)

    char(2)

    字节流(以stream结尾的), 字符流(以Reader, Writer结尾的)

        字节流: 一个字节占8位, 以一个字节为单位读数据

   字符流: 一个字符占两个字节, 以一个字符为一个单位

  按照功能分:

      节点流, 处理流

     节点流: 只有一个根管道套在文件上进行传输

       处理流: 将节点流处理一下, 增强管道的功能, 相当于在管道上套一层

JDK提供的流

  提供了四个基本抽象类: InputStream, OutputStream, Reader, Writer

      InputStream的基本方法:

       int read(): 每次调用这个方法, 就读取一个字节, 以整数的形式返回

      int read(byte[] buffer---缓冲区): 让流每次读满一个缓冲区, 再统一处理, 先存在缓冲区里, 返回值int是返回实际当中读取了多少字节数(伤硬盘的原理)

      int read(byte[] buffer, int offset, int length): 也是一个缓冲区, 读取length长度的字节数, 存到buffer的缓冲区里, 从buffer的offset位置开始存, 返回值是实际读了多少字节                         数

      close(): 关闭资源

   OutputStream的基本方法:

      void write(int b)

      void write(byte[] b)

      int wirte(byte[] buffer, int offset, int length)

       close()

      flush(): 将缓冲区中的文件全部写出

          在使用流的时候的一个良好的习惯, 先flush, 再close

      Reader的基本方法:

        int read()

        int read(char[] c)

       int read(char[] c, int offset, int length)

       close()

   Writer的基本方法:

         void write()

       void write(char[] c)

       void write(char[] c, int offset, int length)

     void write(String s)

      void write(String s, int offset, int length)

        close()

       flush()

BufferedReader

readLine()---每次调用就会读取一行

BufferedWriter

writeLine(String s)---每次调用写出一行

最新文章

  1. ArcGIS Engine代码共享-工作空间(workspace)对象操作
  2. linux下网络程序遭遇SIGPIPE的解决(转)
  3. 第48套题【tarjan】【图&树的连通性】【并查集】
  4. 前端必杀技之Javascript 第1天
  5. 《Python基础教程(第二版)》学习笔记 -> 第九章 魔法方法、属性和迭代器
  6. Postfix+Amavisd-new+Spamassassin+ClamAV整合安装
  7. 给Amazon ec2 增加卷(Volume)并挂载到系统
  8. Spring Web MVC(三)之注解
  9. JavaScript实现动画效果
  10. Failed to create Accelerated Display. Please check the display hardware and drivers meet the minimum requirements.
  11. Linux DNS 查询剖析(第四部分) | Linux 中国
  12. Sharepoint 2010 工作流状态值
  13. 在Java中多段执行adb或者shell的命令
  14. [LISP] LISP Collections
  15. 03_python_基本数据类型
  16. 【Android UI设计与开发】第01期:引导界面(一)ViewPager介绍和使用详解
  17. PAT 列车厢调度   (25分)(栈和容器的简单应用)
  18. Chapter 3 Phenomenon——2
  19. ny168 房间安排
  20. Variation Model的应用

热门文章

  1. Rabbit MQ 面试题相关
  2. 数据结构:Bitset
  3. 【BZOJ4819】【SDOI2017】新生舞会 [费用流][分数规划]
  4. Java 对象排序详解
  5. Angular2.0 基础: User Input
  6. FJOI游记(日记向 不定期更新)
  7. Caffe 学习笔记1
  8. •搭建LAMP环境及快速部署双网站并实现基于域名的虚拟主机
  9. python基础===python基础知识问答(转)
  10. 大公司开源网址[www]