什么叫流?就是数据的流动。以内存为基准,分为输入input和输出output。输入也叫做读取数据,输出也叫写出数据。

        

  分类

  • 按数据的流向分: 输入流、输出流

  •  按数据类型分:    字节流、字符流

       

1、 字节流FileOutStream、FileInputStream

  1.1  OutputStream 字节输出流

    概述:输出流,是一个抽象类,是所有字节输出流的父类。

    作用:可以将输出从内存中保存到文件中。

  OutputStream类常用子类:

  • FileOutStream
  • BufferedOutputStream

  • ObjectOutputStream

  • PrintStream

  OutputStream类常用方法:

  • public void close​()           关闭流

  • public void write​(byte[] b)将指定的字节写入此输出流

  • public void write​(byte[] b, int off, int len)     从位于偏移off的指定字节数组写入len字节到此输出流

  • public void flush​()           刷新流

                                  

  1.2 FileOutputStream 文件字节输出流

    根据文件路径字符串创建字节输出流对象,如果关联的目标不存在,则会自动创建该文件

    1.2.1 FileOutputStream构造方法

      • public FileOutputStream(File file)
      • public FileOutputStream(File file, boolean append)   //append:是否追加;true:追加,false:不追加

 
        1.2.2字节输出流的使用步骤

(a)创建字节输出流对象关联目标文件

(b)调用write方法输出数据,以字节为单位输出数据

(c)关闭流

1.3 InputStream字节输入流

概述:字节输入流,是一个抽象类,是所有字节输入流的父类

        1.3.1 InputStream类常用子类
      • FileInputStream

      • BufferedInputStream

      • ObjectInputStream

 
      1.3.2 InputStream类常用方法
  • void close()

  • int read() //读取一个字节,返回实际读取的字节

  • int read(byte[] b)       从目标文件中读取数据到字节数组中,

  • int read(byte[] b, int off, int len)  //b:从目标文件到数组中, off:起始位置, len:读取长度

 
   1.4 FileInputStream 文件字节输入流

    构造方法:

      • public FileInputStream​(String name)

      • public FileInputStream​(File file)

      根据文件对象或文件路径字符串创建字节输入流对象

      如果文件对象关联的目标文件不存在,则会抛出异常

2.     字符流Reader、Writer

  2.1  Reader 字符输入流

    是一个抽象类,是所有字符输入流的父类。

 

  2.1.1 Reader类常用子类

  • FileReader

  • BufferedReader

  • InputStreamReader

  2.1.2 Reader类常用方法

  • void close()    关闭释放流资源

  • int read()       读一个字符,返回读取到的字符

  • int read(char[] cbuf)

  • public int read​(char[] cbuf,int off, int len)

 

  2.1.3字符输入流的使用步骤

    (a) 创建字符输入流对象关联对象

    (b) 调用字符输入流对象的read方法从目标文件中读取数据,以字符为单位读取数据

    (c)调用close方法关闭字符输入流

  2.2 FileReader 文件字符输入流

    FileReader类是读取字符文件的类。构造时使用系统默认的字符编码。

  2.3 Writer类概述

    是一个抽象流,是所有字符输出流的父类

    Writer类常用子类:

      • FileWriter

      • BufferedWriter

      • OutputStreamWriter

      • PrintWriter

  2.4 FileWriter 字符文件输出流

    FileReader是读取字符文件的类。构造时使用系统默认的字符编码。

3.     IO流小结:

  3.1 如何判断是字节流还是字符流

    以Stream结尾的是字节流

    以Reader结尾的是字符流

  3.2 Close和flush方法的区别

    close方法内部会触发flush方法调用,在关闭流之前会将缓冲区的内容输出到目标文件中。

    flush方法将缓冲区的数据刷新到目标文件中。

  3.3 字节流和字符流的选择

    字符流只能操作文本文件,字节流可以操作任意类型的文件。

  如果要操作的文件类型是非文本文件(图片,视频,音频),则只能选择字节流

  如果明确清楚要操作的文件类型是文本文件则推荐使用字符流

4.     Properties类

  Properties属性集,是一个双列集合,实现Map接口,继承Hashtable(过时了)。不需要指定泛型,键和值的类型都是字符串类型

  有与流技术相结合的方法,可以直接将集合中的数据保存到文件中,也可以直接从文件中读取。

  4.1常用方法:

   (a)存储键值对,功能和put方法一样

    public Object setProperty(String key, String value)

  (b)根据键,获取对应的值

   public String getProperty(String key)

  (c)根据键获取值,没有返回默认值

   public String getProperty(String key, String defaultValue)

4.2 Properties集合与IO流相关的方法

(a)将集合中的数据保存到文件中

          public void store(OutputStream out, String comments)
            comments:备注,知识,一些说明性文字,一般给null

(b)从流关联目标文件中加载数据到集合中

            public void load(InputStream inStream)

  4.3属性文件

    命名要求:xxxx.properties

    存储数据的格式:每一个键值对占一行,格式:键=值

    属性文件中可以使用注释,注释是以#开头

day009-IO流的更多相关文章

  1. Java基础之IO流

    很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...

  2. Java中IO流,输入输出流概述与总结

    总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...

  3. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  4. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  5. IO流总结

    IO流的作用:用于设备和设备之间的数据传输. IO流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象. IO流的分类:  按照操作数据的类型分为两种: 字节流和字符流.  按 ...

  6. IO流

    流的概念和作用 学习JavaIO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特 ...

  7. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  8. 揭开Java IO流中的flush()的神秘面纱

    大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...

  9. java IO流 之 其他流

    一.内存操作流(ByteArrayInputStream.ByteArrayOutputStream) (一).   public class ByteArrayInputStream extends ...

  10. java IO流 之 字符流

    字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...

随机推荐

  1. 【原创】SpringMVC同一RequestMapping返回不同的类型

    曾经在工作中遇到过导出文件时,需要根据不同情况返回不同的数据的情况. 例如: 如果没有数据,弹框提示"没有数据" 导出报错,弹框提示"系统错误" 正常情况下,下 ...

  2. [转] 浏览器自动化测试初探:使用 phantomjs 与 casperjs

    [From] https://www.qcloud.com/community/article/641602001489391648 作者:yangchunwen 首先要解释一下为什么叫浏览器自动化测 ...

  3. Firefox与IE浏览器缓存的两个重要区别

    转自: http://www.yeeyan.org/articles/view/mouse4x/17150 当你建立好一个WEB服务后,通常有两个类型的缓存需要配置: 设置网站有更新的时候html资源 ...

  4. Git本地缓存问题 修改密码后git无法拉取

    问题描述:使用正确的用户名和密码可以登录到Git代码仓库,但是在本地无法使用Git bash命令行的方式拉取代码. 问题原因:第一次使用Git bash方式拉取代码时,会根据当前的用户和密码生成一串. ...

  5. CI 框架中的日志处理 以及 404异常处理

    最近在整理项目中的日志问题,查了一些关于 “CI 框架中的日志处理 以及 404异常处理” 的东西,顺便记录一下: 关于错误日志: 1. 在CI框架中的 system/core/CodeIgniter ...

  6. web服务器架构演化及所其技术知识体系(分布式的由来)

    文章标题是我自己取的,内容来着百度百科k5665219的一篇回答,觉得讲的很不错就转载过来了. 最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们 ...

  7. UI设计师与VI设计师的区别

    企业视觉形象(CorporateVisualImage)与企业视觉形象识别(VI)并不是一个概念.前者是企业与生俱来的客观存在要素,也就是说一个企业无论是否制定了它的VI,也无论其所制定的VI是否成功 ...

  8. AWS Intro - Static IP with ssh

    Notes:  Please config static ip when launch instance. Because change dynamic public ip to static ip, ...

  9. (转)PowerHA完全手册(一,二,三)

    PowerHA完全手册(一) 原文:http://www.talkwithtrend.com/Article/39889-----PowerHA完全手册(一) http://www.talkwitht ...

  10. 第十五章:集成JPUSH

    如果不想自己搭建push server,则可以借助于第三方的api来实现push的功能,本文主要介绍ionic如何集成jpush. 具体步骤如下: 创建ionic应用:ionic_jpush. 申请j ...