黑马程序员 关于学习毕老师IO流后的一些笔记
来源:互联网 发布:linux home没root权限 编辑:程序博客网 时间:2024/05/16 05:33
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
流的本质是数据传输,根据数据传输特性将流抽象为各种累,方便更直观的进行数据操作
IO流的分类
根据处理数据类型的不同分为:字符流和字节流
根据数据流向不同分为:输入流和输出流
字符流和字节流
字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:
读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。
IO流常用基类:
1,字节流的抽象基类
InputStream OutputStream
2, 字符流的抽象基类
Reader Writer
注:由这四个类派生出来的子类名称都是以基类父类名作为子类名的后缀
如:InputStream 的子类FileTnputStream
Reader的子类 FileReader
字符流:
IO异常处理方式
FileWriter fw =null;
try
{
fw=new ("Demo.txt");
fw.write("abcd");
}
catch(IOException e)
{
System.out.println("catch:+e.toString());
}
finally
{
try
{
if(fw!=null)
fw.close();
}
catch (IOEception e)
{
System.out.println(e.toString);
}
}
字符流的缓冲区:
作用:提高了对数据的读写效率
在创建缓冲区前必须先有流对象
对应类:
BufferedWriter
BufferedReader
BufferedWriter burw = new BufferedWriter(fw);
bufw.close();
//其实关闭缓冲区,就是关闭缓冲区中的流对象
所以不用fw.close();
该缓冲区提供了换行fangfa
newline(); 调用一次,换行一次
BuffereReader
该缓冲区提供了一个一次读一行的方法 readline
方便于对文本数据的获取
当返回NULL时,表示读到末尾
readline 方法返回的时候只返回回车符之前的数据内容,并不返回回车符,要调用newline();
装饰类通常会通过构造方法接受呗装饰的对象 并基于被装饰的对象的功能,提供更强的功能。比如 BuffereRead 就是FileRead的装饰类
装饰体系比继承更灵活,降低了类与类之间的关系。
字符串变数组
"abc".getBytes();
复制图片
思路:
1,用字节流对象关联图片
2,用字节写入刘对象创建一个图片文件,用于存储获取到的图片数据
3,通过循环读写,完成数据存储
4,关闭资源。
最后总结下流操作的基本规律:
通过两个明确来完成
1,明确源和目的
源:输入流 InputStream Reader
目的:输出流 OutputStream Writer
2,操作的是否为纯文本
是:字符流
不是:字节流
3,当体系明确后,再明确要使用具体的哪个对象,通过设备进行区分
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台
然后:需要提高效率吗?
是:BufferdReader
如果存储时,需要加入指定编码表,则用转换刘
所以需使用的对象是OutputStreamWriter
而该转换流对象需要接收一个字节输出流
而且还可以操作的文件的字节输出流,FileOutputStream
转换流什么时候使用呢
字符与字节的之间的桥梁,通常涉及到字符编码转换时,需要用到转换流。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
- 黑马程序员 关于学习毕老师IO流后的一些笔记
- 黑马程序员 java学习笔记4-Io流学习后可能会用到的实例
- 黑马程序员-关于Java IO流的一些理解
- 黑马程序员---黑马IO流学习笔记
- 黑马程序员--学习IO流的一些总结
- 黑马程序员_关于io的学习
- 黑马程序员-关于IO的学习
- 黑马程序员---Java基础学习笔记(IO-后篇)
- 黑马程序员-----关于IO流学习日志
- 黑马程序员---毕向东老师视频笔记(关于static)
- 黑马程序员--IO流的学习笔记(一)
- "黑马程序员"IO流学习笔记02
- 黑马程序员 IO流学习笔记三
- 黑马程序员 IO流学习笔记二
- 黑马程序员 IO流学习笔记一
- 黑马程序员--学习笔记/IO流1
- 黑马程序员--学习笔记/IO流2
- 黑马程序员--学习笔记/IO流3
- hdu - 3724 - Encoded Barcodes(Trip)
- android list变化时 listview notifyDataSetChanged 无效
- HDU1160FatMouse's Speed
- jsp分页后如果数据库中没有数据导致页面显示不全 表格的边线显示不全
- 从表单获取的数据判断是否为空的办法
- 黑马程序员 关于学习毕老师IO流后的一些笔记
- Java中long和Long有什么区别
- 黑马程序员 GUI的一些笔记
- 屌丝程序员与房子
- linux内核之并发控制(一)
- WCF-003:C#中关于使用第三方服务的注意事项
- Unity3D Sqlite使用
- 黑马程序员 java读写锁与缓存
- zoj 1716