A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 枪杆不如笔杆 中级黑马   /  2015-2-20 09:43  /  940 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对IO的理解

IO的作用:
a) 处理设备之间的数据传输
b) Java是通过Stream流对象来操作数据的
c) 流分类
i. 按操作数据分为:字节流和字符流
ii. 流向分为:输入流和输出流
字符流基类:
a) reader
b) witer
字节流基类:8个字节
a) InputStream
b) OutputStream
writer:写字符操作
a) close()关闭此流,但要先刷新它 关闭之前会刷新一次内部的缓冲中的数据。
b) flush()刷新该流的缓冲。
c) writer(char[] cbuf)写入字符数组
d) writer(int c) 写入单个字符的ASCCII码
e) …
FileWriter类是对应Writer的子类用于操作文件
a) FileWriter(String fileName)根据文件名构造一个FileWriter对象用于对文件进行操作
b) FileWriter(String filename,Boolean append)如果append为true则向指定文件进行续写或建立
c) \r\n在Windows中是换行而Linux中\n为换行
关于对IO流的异常处理
a) 对建立和写入FileWriter对象时的异常捕捉
b) 对读写结束时close的异常处理
Reader:读字符操作
a) read()读取单个字符
b) read(char[] cbuf)将字符读入到数组 返回读到的字符个数,如果未读到则返回-1
注:用做批次读入,用到数组转换成字符串:String(buf,0,len)
c) close()关闭该流并释放与之关联的所有资源。
d) FileReader(String fileName) 在给定从中读取数据的文件名的情况下创建一个新 FileReader 如果没有此文件存在抛出 FileNotFoundException
字符流的缓冲区
a) 提高了对字符流读写的效率,实际是利用数组为存储对象批次读和写
b) 对应类:
i. BufferedWriter
ii. BufferedReader
c) 结合流才能使用,是对流增强(这里使用了包装类设计模式)
BufferedWriter
a) Void newline 换行
BufferedReader
a) String readLine() 读取一行文本readLine() 读取一个文本行。 返回:包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null ,所有要手动写入换行.
IO流的LineNumberReader
a) int getLineNumber() 获得当前行号
b) void setLineNumber() 设置当前行号
IO流(装饰设计模式)
a) 当想要对已有对象进行功能增强时,可以定义一个类,将已有对象传入,基于已有的功能,并提供加强功能,那么该自定义类称为装饰类。
b) 装饰类通常会通过构造方法接收被装饰的对象。并基于被装饰的功能,提供更强的功能。(可以理解为打扮,比如自己如果要去面试的化,咱们要把自己打扮一下,把自己搞上点新鲜的衣服,但是最后还是一个人,只是身上多个点东西,这就是装饰)
IO流(装饰和继承的区别) 以前是通过继承将每一个子类都具备父类的功能。 那么继承体系会复杂,并不利于扩展。 现在优化思想。单独描述一下装饰类的内容。 将需要被装饰的对象。传递进来。也就是,谁需要被装饰,谁就作为参数传递给装饰类。 这样继承体系就变得很简单。优化了体系结构。 装饰模式比继承要灵活。避免了继承体系臃肿。而且降低了类于类之间的关系。 装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能。所以装饰类和被装饰类通常是都属于一个体系中的。
InputStream字节读
a) int available()返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。即返回文件的大小
IO流
PrintStream System.out对应的是标准输出设备:控制台
InputStream System.in 对应的是标准输入设备:键盘

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马