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

黑马程序员_IO流一(IO流概述,字符流,FileWriter,FileReader)

2013-05-19 17:20 375 查看
--------- android培训java培训、期待与您交流!---------

一.IO流

1.IO(Input Output)流

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

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

3)java用于操作流的对象都在IO包中。

4)流按操作数据分为两种:字节流和字符流.

(1)字符流:方便处理文本数据。

(2)编码表:国际统一码表,unicode----->UTF-8

美国-----Ascii表

中国-----GB2312-----GBK

不同码表之间排码就会产生乱码,字符流的出现在内部隔合了编码表,

因为可以为读到的字节数据指定编码表,在处理文字数据时就会很方便。

5)流按流向分为:输入流,输出流。

2.IO流常用基类

1)字节的抽象基类:InputStream OutputStream

2)字符流的抽象基类 Reader Writer

二 Writer——OutputStreamWriter——FileWriter

1.Writer抽象类中的方法:

(1)abstract void close() 关闭流,关闭前刷新该流。

(2)abstract void flush() :刷新该流中的缓冲。

(3)void write(String str):写入字符串。

2.字符流的特点:

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

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

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

代码示例:

import java.io.*;

class FileWriterDemo

{

public static void main(String[] args) throws IOException

{

FileWriter fw = new FileWriter("a.txt);

fw.write("abcde");

fw.flush();

fw.close();

}

}

3.IO常见异常。

1).几是能和设备上的数据发生关联的,调用底层的资源都会发生IOException。

2).“K\\demo.txt".没有 K盘,会抛出FileNotFoundException(系统找不到指定的路径)异常。

3).初始化抛出异常,说明初始化失败,fw还为空,故不可调用对象的close()方法。

所以抛出NullPointerException,finally中一定要对关闭的流对象进行不等于空的判断。

三FileReader

Reader--->FileReader(java.io包中)

1.Reader类

用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。

但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。

1)构造方法:

protected Reader() //protected说明只有子类可使用。

创建一个新的字符流 reader,其重要部分将同步其自身的 reader。

(1)abstract void close()

关闭该流并释放与之关联的所有资源。

(2)int read()

public int read()throws IOException

读取单个字符。在字符可用、发生 I/O 错误或者已到达流的末尾前,

此方法一直阻塞。用于支持高效的单字符输入的子类应重写此方法。

返回:

作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff),

如果已到达流的末尾,则返回 -1

(3)int read(char[] cbuf)

将字符读入数组。 此方法返回的是读的次数。

2.FileReader

public class FileReader extends InputStreamReader

用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。

要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。

FileReader 用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream。

第一种读取方式:

代码示例:

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

int ch = 0;

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

{

System.out.println((char)ch);

}

第二种读取方式:

1)read(char[] chs)方法

public int read(char[] cbuf)

throws IOException将字符读入数组。在某个输入可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。

2)代码演示:

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

char[] buf = new char[1024];

int len = 0;

while((len = fr.read(buf))!= -1){

System.out.println(new String(buf,0,num);

}

fr.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐