java io流学习总结
一、什么是流?
流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流,流机制是Java及C++中的一个重要机制,通过流我们可以自由地控制文件、内存、IO设备等数据的流向。而IO流就是用于处理设备上的数据,如:硬盘、内存、键盘录入等。IO流根据处理类型的不同可分为字节流和字符流,根据流向的不同可分为输入流和输出流。
二、字节流和字符流的区别:
字符流,因为文件编码的不同,就有了对字符进行高效操作的字符流对象,它的原理就是基于字节流读取字节时去查了指定的码表。它和字节流的区别有两点:1.在读取数据的时候,字节流读到一个字节就返回一个字节,字符流使用了字节流读到一个或多个字节(一个中文对应的字节数是两个,在UTF-8码表中是3个字节)时,先去查指定的编码表,再将查到的字符返回;2.字节流可以处理所有类型的数据,如jpg、avi、mp3、wav等等,而字符流只能处理字符数据。所以可以根据处理的文件不同考虑使用字节流还是字符流,如果是纯文本数据可以优先考虑字符流,否则使用字节流。
三、IO体系,所具备的基本功能就是读和写:
1.字符流
|-- Reader(读)
|-- Writer(写)
Reader
|--InputStreamReader
|--FileReader:用于处理文件的字符读取流对象
Writer
|--OutputStreamWriter
|--FileWriter:用于处理文件的字符写入流对象
其实很容易就可以看出来,IO体系中的子类名后缀绝大部分是父类名称,而前缀则是体现子类特有功能的名称。
Reader中常见的方法:
|--int read()
读取一个字符,并返回读到的这个字符,读到流的末尾则返回-1。
|--int read(char[])
将读到的字符存入指定的数组中,返回的是读到的字符个数,
读到流的末尾则返回-1。
|--close()
读取字符其实用的是window系统的功能,就希望使用完毕后,
进行资源的释放。
FileReader除了自己的构造函数外没有特有的方法:
|--用于读取文本文件的`流对象。
|--用于关联文本文件。
|--构造函数FileReader(String fileName)
在读取流对象初始化时,必须要指定一个被读取的文件,
如果该文件不存在则会发生FileNotFoundException异常。
Writer中常见的方法:
|--write()
将一个字符写入到流中。
|--write(char[])
将一个字符数组写入到流中。
|--writer(String)
将一个字符写入到流中。
|--flush()
刷新流,将流中的数据刷新到目的地中,流还存在。
|--close()
关闭资源,在关闭钱会先调用flush(), 刷新流中的数据到目的地。
FileWriter,除了自己的构造函数外没有特有的方法:
|--该类的特点
|--用于处理文本文件
|--没有默认的编码表
|--有临时缓冲
|--构造函数,在写入流对象初始化时,必须要有一个存储数据的目的地。
|--FileWriter(String fileName),该构造器是干什么用的呢?
|--调用系统资源
|--在指定位置创建一个文件,如果该文件已经存在则被覆盖。
|--FileWriter(String filename,Boolean append),这构造器的作用是?
当传入的boolean类型的值为true时,会在指定文件末尾处进行数据的续写。
清单1,将文本数据保存到文件中代码
private static void test1(){
FileWriter fw=null;
try {
//初始化FileWriter对象,指定文件名已经存储路径
fw=new FileWriter("D:/test.txt");
fw.write("将字符串写入流");
//将流中的数据刷新到目的地,流还在
fw.flush();
fw.write("将字符串写入流");
} catch (IOException e) {
e.printStackTrace();
}finally{
if(fw!=null){
try {
fw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
清单2,读取一个已有文本文件,并将文本内容打印出来代码
private static void test2(){
FileReader fr=null;
try {
//初始化FileReader对象,指定文件路径
fr=new FileReader("D:/test.txt");
int ch=0;
四川高考排名125230左右排位文科可以上哪些大学,具体能上什么大学
西南交通大学希望学院和北京农学院哪个好 附对比和区别排名
广东高考排名249380左右排位物理可以上哪些大学,具体能上什么大学
黑龙江高考排名20460左右排位理科可以上哪些大学,具体能上什么大学
湖北高考排名115550左右排位物理可以上哪些大学,具体能上什么大学
长春师范大学和广州大学哪个好 附对比和区别排名
正式的私人借款合同书
公司车间主任工作总结
新员工试用期的工作总结(精选五篇)
物业上半年工作总结范文(通用六篇)
公司车间主任工作总结
新员工试用期的工作总结(精选五篇)
物业上半年工作总结范文(通用六篇)
最新学校安全教育日活动总结范文
幼儿园小班九月份工作心得
音乐学科名师工作室个人总结
贵州高考排名175790左右排位理科可以上哪些大学,具体能上什么大学
山东高考排名557870左右排位综合可以上哪些大学,具体能上什么大学
河南高考排名447200左右排位理科可以上哪些大学,具体能上什么大学
辽宁高考排名97440左右排位物理可以上哪些大学,具体能上什么大学
长春工程学院的水电站设备安装与管理专业排名怎么样 附历年录戎数线
河南高考排名33600左右排位文科可以上哪些大学,具体能上什么大学
湖北高考排名85110左右排位历史可以上哪些大学,具体能上什么大学
河南高考排名321010左右排位文科可以上哪些大学,具体能上什么大学
甘肃高考排名25240左右排位理科可以上哪些大学,具体能上什么大学
四川高考排名277320左右排位理科可以上哪些大学,具体能上什么大学
湖北高考排名108880左右排位物理可以上哪些大学,具体能上什么大学
三亚城市职业学院和漳州理工职业学院哪个好 附对比和区别排名
江西洪州职业学院和无锡职业技术学院哪个好 附对比和区别排名
江西高考排名134360左右排位理科可以上哪些大学,具体能上什么大学
河北高考排名247720左右排位物理可以上哪些大学,具体能上什么大学
河北高考排名47100左右排位历史可以上哪些大学,具体能上什么大学
三门峡职业技术学院的助产专业排名怎么样 附历年录戎数线
江西高考排名105250左右排位文科可以上哪些大学,具体能上什么大学
安徽高考排名38080左右排位文科可以上哪些大学,具体能上什么大学
黑龙江东方学院和广东石油化工学院哪个好 附对比和区别排名
采购部门年终工作总结模板
临床医学个人实习总结
精循营部年终工作总结范文
珠宝工作总结范文
电话销售个人年终总结范文
企业人力资源年度工作总结三篇
保育员的个人工作总结范文
教师教学任务工作总结
生产单位计量工作总结
品质年终工作总结范文(精选五篇)
关于初中语文教学工作总结集合9篇
自治区创建优秀卫生学校工作总结
中小学信息技术教学工作总结范文(通用五篇)
办公室后勤工作个人总结
国土局干部的工作总结