day009-IO流
什么叫流?就是数据的流动。以内存为基准,分为输入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流的更多相关文章
- Java基础之IO流
很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...
- Java中IO流,输入输出流概述与总结
总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...
- Java:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
- java IO流详解
流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- IO流总结
IO流的作用:用于设备和设备之间的数据传输. IO流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象. IO流的分类: 按照操作数据的类型分为两种: 字节流和字符流. 按 ...
- IO流
流的概念和作用 学习JavaIO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特 ...
- Java IO流学习总结
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- 揭开Java IO流中的flush()的神秘面纱
大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...
- java IO流 之 其他流
一.内存操作流(ByteArrayInputStream.ByteArrayOutputStream) (一). public class ByteArrayInputStream extends ...
- java IO流 之 字符流
字符是我们能读懂的一些文字和符号,但在计算机中存储的却是我们看不懂的byte 字节,那这就存在关于字符编码解码的问题.所以在学习Io流的字符流前我们先了解些关于编码问题. 一.字符集与字符编码 1.什 ...
随机推荐
- python-is,==
在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识).python type()(数据类型)和value(值).is和==都是对对象进行比较判断 ...
- HDU - 3336 next运用+递推
题目的匹配应该也要看成一个文本串与另一个模式串的匹配过程 Text是以当前i结尾的后缀来匹配Pattern的前缀(非真) 这里的Pattern肯定是可以匹配成功的,直接由next来保证(next总是当 ...
- Java8如何用
2014年发布的Java8,现在应该是业界使用最普遍的Java版本,可很多Java开发人员并没有充分发挥这4年前发布的版本的优点, 本文就是带着“学以致用”的目的去了解Java8,挖掘编码中可提高效率 ...
- Oracle RAC集群搭建(一)-ASM共享存储卷
01, ASM共享存储卷 安装集群的话,必须要有共享磁盘,目的是为作裁决磁盘使用.还需要有数据文件的共享磁盘 02,规划 主机 裁决磁盘 数据 rac1 1G*1 20 ...
- 一个优秀的app应该考虑的问题
带着团队做了3个app,需求是客户决定的,甚至连进度都不是项目经理可以控制的(譬如说一个app要在6周内,3个人完成).现在的状态是基本上没有用户量,当然原因是多方面的,下面说一说我认为app设计的原 ...
- TOJ 4393 Game
描述 Bob always plays game with Alice.Today,they are playing a game on a tree.Alice has m1 stones,Bob ...
- cmd激活win10
自己动手,KMS激活win10 2016 长期服务版.步骤如下:命令提示符(管理员),依次输入以下3条命令 slmgr /ipk DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJslmgr ...
- Python 递归返回树形菜单JSON串 <flask>
需求:菜单管理功能(增.删.改),多级树形菜单展示 数据库表设计 create table if not exists Menu( id serial primary key , title ) no ...
- WPF中嵌入Skyline提供的COM组件填坑
网上有很多关于在WPF中使用的Skyline提供的COM组件的教程,但大都雷同一律,其中很多的细节均为涉及,本文意在在其原基础上进行一些细节的补充. 工具:Visual Studio 2017 1. ...
- nyoj 999——师傅又被妖怪抓走了——————【双广搜】
师傅又被妖怪抓走了 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 话说唐僧复得了孙行者,师徒们一心同体,共诣西方.自宝象国救了公主,承君臣送出城西,沿路饥餐渴饮,悟 ...