您的位置:首页 > 职场人生

黑马程序员----Java基础基础之IO流

2015-06-18 00:04 363 查看
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ---------

IO流用来处理设备之间的数据传输

java对数据的操作是通过流的方式

Java用于操作流的对象都在io包中

liu按照操作数据类型分为两种:字节流于字符流

流按流向分为:输出流,输入流

字节流的抽象基类    InputStream   OutputStream

字符流的抽象基类:Reader       Writer   

先学习一下字符流的特点.

既然io流是用于操作数据的,那么数据最常见的体现形式是:文件

需求:在硬盘上创建一个文件并写入一些数据.

找到一个专门用于操作文件的Writer的子类对象.FileWriter.后缀名是父类名,前缀名是该流对象的功能

FileWriter fw = new FileWriter("文件名",true);

传递一个true的参数,表示不覆盖已有的文件,并在已有文件的末尾处进行数据续写

换行操作符:  \r\n

文件读取流:

定义一个字符数组,用于存储到字符

方法read(char[])返回的是读到的字符个数

读取流的另一种读取文件的方法:

char[] buf = new char[1024];

int len = 0;

while((len=fw.read(buf))!=-1)

String str = new String(buf,0,len);

字符流缓冲区:

缓冲区的出现提高了对数据的读写效率

对应的类:     BuffferWriter         BufferReader

缓冲区要结合流才可以使用.

在流的基础上对流的功能进行了增强

缓冲区的出现是为了提高流的操作效率而出现的.所以在创建流对象之前,必须要有流对象

bufw.newLine()缓冲区特有的换行操作

字符读取流缓冲区:

该缓冲区提供了一个一次读一行的方法readLine,方便于对文本数据的获取.

当返回null时,表示读取到文件末尾

String line = null;

while((line=bufr.readLine())!=null)

System.out.println(line);

readLine方法返回的时候只返回回车符之前的数据内容,并不返回回车符

所以在读取一行之后应该执行换行(bufr.newLine())和刷新(bufr.flush())动作

装饰设计模式

当想要对已有的对象进行功能的增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能.那么自定义的该类称为装饰类

装饰类通常会通过构造方法接受被装饰的对象.并基于被装饰的对象功能,提供更强的功能

装饰模式比继承要灵活,避免了继承体系的臃肿,而且降低了类与类之间的关系

装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强功能

所以装饰类和被装饰类通常是属于一个体系中的

LineNumberReader:跟踪行号的缓冲字符输入流

FileReader fw = new FileReader("Demo.txt");

LineNumberReader lnr = new LineNumberReader(fw);

String line = null;

while((line=inr.readLine()))

System.out.println(inr.getLineNumber()+"::"+line);

inr.close();

读取键盘录入:

System.out:对应的是标准的输出设备:控制台

System.in:对应的是标准的输入设备:键盘

流操作的基本规律

通过三个明确来完成:

1.明确源和目的.

源:  输入流  InputStream  Reader

目的:  输出流   OutputStream  Writer

2.操作数据是否是纯文本

是:  字符流

不是:   字节流

3.当体系明确后,在明确要使用那个具体的对象

通过设备来进行区分:

源设备:内存,硬盘,键盘

目的设备:内存,硬盘,控制台

例如:将一个文本文件中的数据存储到另一个文件中,复制文件.

源:因为是源,所以使用读取流.InputStream, Reader

是不是操作文本文件

是:所以选择Reader,  这样体系就明确啦!

接下来明确要使用该体系中的那个对象.

明确设备:硬盘,上一个文件

Reader体系中可以操作文件的对象是FileReader

是否提高效率:是,加入Reader体系中的缓冲区,BufferedReader

目的:

是否是纯文本

是:Writer

设备:硬盘,一个文件

Writer体系中可以操作文件的对象是FileWriter

是否提高效率:是,加入Writer体系中的缓冲区,BufferedWriter
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: