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

黑马程序员__IO流

2013-02-12 16:01 169 查看
IO流

IO流就是输入输出流(InputStream OutputStream)。

IO分类

按照流向分:

输入流

输出流

按操作数据分:

字节流

字符流

根据IO流的分类IO流有四个抽象基类

字节流抽象基类

InputStream

OutputStream

字符流抽象基类

Reader

Writer

流操作通用流是字节流,字符流是基于字节流的。

字符流每次读取一个字符,也就是两个字节。

字符流操作文本文件跟方便。

字符流融合了编码表。

IO流是用于操作数据的。

最常见的体现形式是操作文件。

FileWriter:字符文件输出流类。

FileWriter的是用

1.创建一个FileWriter对象。

new FileWriter(String name);new FileWriter(String name,boolean bln);

FileWriter类没有空构造函数,该对象被初始化时必须要明确被操作的文件。

而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖(调用第一个构造函数)。

其实该步骤就是要明确数据要存放的位置。

2.调用write方法,将字符写入到流中。

write(字符数据);可以是单个字符、字符数组或者字符串。

3.刷新流缓冲区中的数据,将数据刷新到指定的文件中。

flush()

4.关闭流,关闭流的同时会自动调用一次刷新,将数据刷新到指定的文件中。

close()

close()和flush()方法的区别

flush刷新后,流可以继续使用。

close刷新后,流会被关闭。

FileReader:字符文件输入流类。

FileReader的使用

1.创建一个FileReader对象。

new FileReader(String name);

创建一个文件读取流对象,和指定名称的文件相关联。

要保证该文件是已经存在的,如果不存在会发生FileNotFoundException

2.调用read方法,读取字符。

read():一次读取一个字符,而且会自动往下读。

3.关闭流。

close()

文本文件两种读取方式

1.一次读取一个字符

2.创建字符缓冲区,将缓冲区可容纳的字符数读取到缓冲区中,

在对缓冲区进行操作。缓冲区长度建议是1024的倍数。

第一种方式范例:

Java代码







FileReader fr=new FileReader("demo.java");

int data=0;

while((data=fr.read()!=-1)

{

System.out.print((char)data);

}

FileReader fr=new FileReader("demo.java");
int data=0;
while((data=fr.read()!=-1)
{
System.out.print((char)data);
}


第二种方式

Java代码







FilerReader fr=new FileReader("demo.java");

char[] buf=new char[1024];

int len=0;

while((len=fr.read(buf)!=-1)//read(buf)返回读取的字符数,如果读取到文本结尾返回-1

{

System.out.print(new String(buf,0,len));

}

FilerReader fr=new FileReader("demo.java");
char[] buf=new char[1024];
int len=0;
while((len=fr.read(buf)!=-1)//read(buf)返回读取的字符数,如果读取到文本结尾返回-1
{
System.out.print(new String(buf,0,len));
}


字符缓冲输出BufferedWriter

缓冲区的出现是为了提高流的操作效率而出现的。

jvm默认的缓冲区大小是64兆。

所以在创建缓冲区之前,必须要有流对象。

字符缓冲输出BufferedWriter流使用

1.创建一个字符写入流对象

2.将需要被提高效率的流对象作为参数传递给缓冲流的构造函数。

3.写数据

4.刷新数据,将缓冲流中的数据刷新到指定的目标。

5.关闭缓冲区,其实就是在关闭缓冲区中的流对象。

该缓冲流提供了一个跨平台的换行符

newLine()方法。

字符流在读取的时候,底层也是在用字节流将读取到的两个字节存放到缓冲字节数组中,

然后去相应的编码表中查找字符,所以字节数组用到了缓冲,

因此在读取字符的时候需要flush。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: