Io流阶段大总结
字节流结构
输入流:

ObjectInputStream:从文件中读取对象
FileInputStream:从文件中输入(读)字节
BufferedInputStream:底层有缓冲数组,在不定义数组的情况下,提高输入(读)效率
输出流:

ObjectOutStream:
经一个对象写入文件
FileOutputStream:
将数据输出(写)文件
BufferedOutputStream:
底层有缓冲数组,再不定义数组情况下,提高输出(写)效率
字符流结构图
输入流:

FileReader:
输入(读)文本文件的数据
BuffereReader:
底层有缓冲数组,在不定义数组情况下,提高输入(读)效率,同时有特有readLine()方法,一次可以读取一整行数据
InputStreamReader:
是从字节流到字符流的桥梁:它读取字节,并使用指定的charset将其解码为字符.它使用的字符集可以有名
称指定,也可以被明确指定,或者使用平台的默认字符集
输出流:

FileWriter:
将数据输出(写)到文本文件
BufferedWriter:
底层有缓冲数组,再不定义数组的情况下,提高写入效率.同时有特有newLine()方法输出跨平台换行
OutputStreaWriter:
是从字符流到字节流的桥梁:使用指定的charset将其解码为字节,它使用的字符集可以是由名称指定,
也可以被明确指定,或者可以接受平台默认的字符集
字节流常用方法
FileInputStream,BufferedInputStream:
int read():读取一个字节
int read(byte[]b):读取一个字节数组
void close:释放文件(关流)
FileOutputStream、BufferedOutputStream:
void write(int b):写入一个字节
void write(byte[]b):写入一个字节数组
void write(byte[]b,int off(开始位置),int len(个数)):写入一个字节数组,从off开始,写入len个
void close:释放文件(关流)
ObjectInputStream:
Object readObject():读取一个对象
void close:释放文件(关流)
ObjectOutputStream:
void writeObject(Object obj):写入一个对象
void close:释放文件(关流)
字符流常用方法
FileReader、BufferedReader、InputStreamReader:
int read():一次读取一个字符
int read(char[]char):一次读取一个字符数组
BufferedReader特有方法:
String readLine():读取一整行
FileWriter、BufferedWriter、OutputStreamWriter:
void write():写入一个字符
void write(char[]char):写入一个字符数组
void write(char[]char,int off(开始位置),int len(个数)):写入一个数组的一部分,开始位置off,写入个数len
void write(String str):写一个字符串
void write(String str,off(开始位置),len(个数)):写一个字符串一部分,开始位置off,写入个数len
void flush():刷新流
void close():释放文件
BufferedWriter特有方法:
void newLine:跨平台通用换行
Properties集合与Io流集合的方法:
void load(Reaner reader):将字符输入流中的数据加载到Properties对象中
void store(Writer writer,String comments):将Properties集合中的数据存入字符输出流
注意事项
flush():
刷新流,之后还可以继续写数据
close():
关闭流,释放资源,但是关闭之前会先写出数据.一旦关闭,就不能再写数据了
关流操作应定要放在try-catch-finally中的finally中:
被finally控制的语句一定会被执行,不管有没有异常,也不管异常有没有被捕获
即使finally中包含continue,break,return,try块结束后,finally块也依旧会执行
使用字节输出流注意事项:
如果文件不存在就创建
写整数时,实际写出的是整数对应码表的字母
使用完必须释放资源
表示文件的路径名称必须存在
使用字符输出(写出)流注意事项:
创建字符输出流对象时如果文件不存在就创建,存在就清空
写数据时:
写int就是写的ASCLL码表中对应的字节
写字符串就是将字符串原样输出
必须释放资源
使用字符流(输入)读取数据注意事项:
文件必须要存在
必须释放资源
对象操作流注意事项:
如果想要这个类能被序列化,那么这个类必须实现一个接口Serializable
Serializable是一个标记接口,实现给接口不需要重写任何方法
静态成员不加transient关键字都会被序列化
serialVersionUID 指定序列号,可以避免javabean修改,造成序列号改变运行时候出错
数据读取末尾的输出标记:
字符,字节读取到文件结尾会返回-1
读取一整行到文件末尾会返回null
读取对象到末尾会报EOFException
File[]listFiles()注意点:
File指向不存在的,返回null
存在的是文件:返回null
存在的是文件夹正常输出,如果是空文件夹,返回长度为0的File数组
权限问题没有访问权限,返回null
注意:返回为null的情况,可以有效避免遍历返回数组时候出现运行时异常
Io流阶段大总结的更多相关文章
- Java-使用IO流对大文件进行分割和分割后的合并
有的时候我们想要操作的文件很大,比如:我们想要上传一个大文件,但是收到上传文件大小的限制,无法上传,这是我们可以将一个大的文件分割成若干个小文件进行操作,然后再把小文件还原成源文件.分割后的每个小文件 ...
- Java中使用IO流实现大文件的分裂与合并
文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时候就可以把这个文件切割成3个1G的文件 ,分 ...
- IO流大总结
- - - - - - - - - - - - - - - 写在前面 - - - - - - - - - - - - - - - 1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过 ...
- 基于JavaSE阶段的IO流详解
1.IO流基本概述 在Java语言中定义了许多针对不同的传输方式,最基本的就是输入输出流(俗称IO流),IO流是属于java.io包下的内容,在JavaSE阶段主要学下图所示的: 其中从图中可知,所有 ...
- 大数据之路week04--day06(I/O流阶段一 之异常)
从这节开始,进入对I/O流的系统学习,I/O流在往后大数据的学习道路上尤为重要!!!极为重要,必须要提起重视,它与集合,多线程,网络编程,可以说在往后学习或者是工作上,起到一个基石的作用,没了地基,房 ...
- Java第三阶段学习(二、IO流--------递归,字节流Stream)
一.递归 定义:指方法在方法内调用自己 适用于方法的运算主体不变,但运行的时候,参与运算的方法参数会变化注意:一定要给递归一个出口,否则内存溢出 练习题1:使用递归打印文件夹中所有的文件,包含子目录中 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_06 Properties集合_1_使用Properties集合存储数据,遍历取出集合中的数据
map下面的实现类叫做Hashtable Properties是唯一和IO流相结合的 讲解 代码
- 对于IO流的个人理解
Samuel 2018-04-21 在这之前,我给你们构造这样一个生活用水的场景: 人们日常生活需要生活用水,那么,水从哪里来呢? 大家都学过初中的物理常识,水在地表,通过蒸发,变成水蒸气去到空中,在 ...
- Java中常见的IO流及其使用
Java中IO流分成两大类,一种是输入流.全部的输入流都直接或间接继承自InputStream抽象类,输入流作为数据的来源.我们能够通过输入流的read方法读取字节数据.还有一种是输出流,全部的输出流 ...
随机推荐
- 20190620_二次开发BarTender打印机时,未能解析主引用“Seagull.BarTender.Print, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86”
错误提示: 严重性 代码 说明 项目 文件 行 禁止显示状态警告 未能解析主引用"Seagull.BarTender.Print, Version=1.0.0.0, Culture=neut ...
- 部署完的Django项目升级为HTTPS
1.阿里云上申请免费ssl证书--->提交各种资料--->等待审核--->下载证书. 2.远程连接阿里云服务器,将下载下来的证书内容复制到Nginx安装目录下的cert目录(需要新建 ...
- Python中自定义类如果重写了__repr__方法为什么会影响到str的输出?
这是因为Python3中,str的输出是调用类的实例方法__str__来输出,如果__str__方法没有重写,则自动继承object类的__str__方法,而object类的__str__方法是调用_ ...
- PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件添加选项卡的addTab和insertTab方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QTabWidget添加选项卡的方法可用使用addTab方法和insertTab方法. 1.增加选项 ...
- 第14.1节 通过Python爬取网页的学习步骤
如果要从一个互联网前端开发的小白,学习爬虫开发,结合自己的经验老猿认为爬虫学习之路应该是这样的: 一. 了解HTML语言及css知识 这方面的知识请大家通过w3school 去学习,老猿对于html总 ...
- FM解析(因子分解机,2010)
推荐参考:(知乎) https://zhuanlan.zhihu.com/p/37963267 要点理解: 1.fm应用场景,为什么提出了fm(和lr的不同点) ctr预测,特征组合,fm的隐向量分解 ...
- 读github,deepfm,pytorch源码 记录
代码:https://github.com/chenxijun1029/DeepFM_with_PyTorch 2020/12/2首先是数据预处理文件:dataPreprocess.py1. 源数据集 ...
- 第六篇 Scrum 冲刺博客
一.站立式会议 1. 会议照片 2. 工作汇报 团队成员名称 昨日完成的工作 今天计划完成的工作 工作中遇到的困难 陈锐基 - 完成关注/取关功能以及动态绑定- 完成点赞/取消点赞功能以及动态绑定 - ...
- 洛谷P2423 [HEOI2012]朋友圈
题目大意: 有\(A,B\)两个点集,每个点有点权,在\(A\)集合中,两个点之间有边满足\(a_i\ xor\ a_j\ mod\ 2 = 1\),在\(B\)集合中,两个点之间有边满足\(b_i\ ...
- P5857 「SWTR-03」Matrix
原本自己有一个思路的,推了半天不太确定看了下题解,发现到后面完全不知道他代码在写些什么(我太弱了),所以打算自己理一下. 题解 首先我们可以肯定的一点就是,我们可以发现,一个矩阵的形态只和他横着和竖着 ...