黑马程序员__IO流

 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代码 复制代码 收藏代码
  1. FileReader fr=new FileReader("demo.java");
  2. int data=0;
  3. while((data=fr.read()!=-1)
  4. {
  5. System.out.print((char)data);
  6. }
FileReader fr=new FileReader("demo.java");
int data=0;
while((data=fr.read()!=-1)
{
	System.out.print((char)data);
}


第二种方式

Java代码 复制代码 收藏代码
  1. FilerReader fr=new FileReader("demo.java");
  2. char[] buf=new char[1024];
  3. int len=0;
  4. while((len=fr.read(buf)!=-1)//read(buf)返回读取的字符数,如果读取到文本结尾返回-1
  5. {
  6. System.out.print(new String(buf,0,len));
  7. }
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。

你可能感兴趣的:(程序员,黑马)