黑马程序员_IO_字符流
来源:互联网 发布:快乐十分装机软件 编辑:程序博客网 时间:2024/05/01 13:13
----------- android培训、java培训、期待与您交流!------------
一、IO流
close()和flush()的区别?
1, 调用flush,可以将数据刷到目的地中,流依然存在,可以继续使用。
调用close,可以将数据刷到目的地中,流已被关闭。不能继续使用。最后使用。
2, close不仅刷新缓冲区,还关闭底层资源。
FileReader(file)如果文件不存在,则会抛文件找不到异常。
调用Reader中的read方法,一次读取一个字符。作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1
调用读取流的read(char[]),将读到的字符存储到字符数组中。返回读取的字符数量,如果已到达流的末尾,则返回 -1
FileWriter(file)创建对象,运行时就会创建指定的文件,因为写入数据必须先有数据存储的目的。 如果要创建的文件已经存在,则会覆盖。
如果在构造时,传入第二个参数为true,将在原有文件末尾处进行续写。
FileWriter fw = new FileWriter("demo.txt",true);
每一段数据都有一个开始标识和结束标识
FileWriter的内部的缓冲区是字节缓冲区
数据存储单元一次4k
缓冲区是为了提高流的效率而存在的,实际是流在调用系统的的底层资源,缓冲区仅仅是将数据进行了缓冲而已,最终写到硬盘上的还是流。
所以缓冲区的close()方法里面调用的实际是流的关闭动作。
二、字符流
1、字符流的理解,由来和作用
用于操作字符数据的编辑类。
同一类型的数据被不同的编码所解析。将字节流和编码表封装成对象,用于操作字符数据,这就有了字符流对象。
2、通过缓冲区对文本文件进行复制。
public static void copyText() {/* * 复制使用数组缓冲区完成。 * *///1,创建读取流和写入流。FileReader fr = null;FileWriter fw = null;try {fr = new FileReader("temp\\CopytTextTest.java");fw = new FileWriter("temp\\demo_copy2.txt");//定义一个缓冲区数组。char[] buf = new char[1024];int len = 0;while((len=fr.read(buf))!=-1){fw.write(buf,0,len);//读取几个就写几个。}} catch (Exception e) {e.printStackTrace();}finally{if(fw!=null)try {fw.close();} catch (Exception e2) {throw new RuntimeException("写入关闭失败");}if(fr!=null)try {fr.close();} catch (Exception e2) {throw new RuntimeException("读取关闭失败");}}}
public static void copyTextByBuffer() throws IOException {//1,创建流对象和缓冲区对象。FileReader fr = new FileReader("temp\\buf.txt");BufferedReader bufr = new BufferedReader(fr);FileWriter fw = new FileWriter("temp\\buf_copy.txt");BufferedWriter bufw = new BufferedWriter(fw);//2,读取到的一行文本String line = null;while((line=bufr.readLine())!=null){bufw.write(line);bufw.newLine();bufw.flush();}bufw.close();bufr.close();}
4、装饰设计模式
装饰模式:为了解决给类的功能进行增强而出现的。
Writer
|--TextWriter
|--MediaWriter
想要对流对象的功能进行增强,比如提高写入的效率。
使用缓冲技术。
Writer
|--TextWriter
|--BufferedTextWriter
|--MediaWriter
|--BufferedMediaWriter
每一个子类这样实现是可以的,但是导致继承体系较为臃肿。
发现其实无论哪个子类需要高效,使用的都是缓冲技术。
干脆将缓冲技术进行单独的描述和封装。
要缓冲区谁,就将谁传给缓冲区。
BufferdWriter
class BufferedWriter extends Writer
{
BufferedWriter(Writer w)
{}
}
装饰设计模式。
Writer
|--TextWriter
|--MediaWriter
|--BufferedWriter
装饰类和被装饰的特点:
1,装饰类中的构造函数需要接受被装饰类。
2,装饰类和被装饰类应该所属于同一个体系。
- 黑马程序员_IO_字符流
- 黑马程序员_IO_字符流
- 黑马程序员_IO_字符流与字节流
- 黑马程序员_IO_字节流&转换流
- 黑马程序员_IO_流操作规律
- 黑马程序员_IO_上
- 黑马程序员_IO_下
- 黑马程序员_IO_其它类
- 黑马程序员 java基础_IO_流对象介绍
- 黑马程序员_IO_其他流对象&编码解码
- 黑马程序员-字符流
- 黑马程序员--字符流
- 黑马程序员-字符流编码
- 黑马程序员_Java(字符流)
- 151_IO_字符流_纯文本_节点流_Reader_FileReader_Writer_FileWriter_读取_写出_拷贝
- 黑马程序员:IO流之字符流
- 黑马程序员 IO流-->字符流
- 黑马程序员-IO流之字符流
- ubuntu 调节屏幕亮度
- Framer:开源原型设计工具,巨头们的心头好
- csdn博客积分详解
- Windows环境利用Vmware7.1.3 搭建iPhone开发环境
- URAL 1635. Mnemonics and Palindromes(简单区间dp)
- 黑马程序员_IO_字符流
- Android-我自己的网络图片下载缓存类
- MFC中控件的TAB顺序
- 浪潮之巅(其他篇)
- Autodesk涉足3D打印 推出Spark开源平台
- UVA 11529 - Strange Tax Calculation(计数问题)
- 如何在GitHub上协作开发开源项目?
- 列出最近8天的日期
- 蜗牛—JavaScript学习之仿网易邮箱注册页面