您的位置 首页 java

Java IO5:字符流

字符流

字节流提供了处理任何类型输入/输出操作的功能(因为对于计算机而言,一切都是0和1,只需把数据以字节形式表示就够了),但它们不可以直接操作Unicode字符,因为上一篇文章写了,一个Unicode字符占用2个字节,而字节流一次只能操作一个字节。既然 Java 的口号就是”一次编写、处处运行”,那么包含直接的字符输入/输出的支持是必要的。因此就有一些字符输入/输出流,之前已经说明过了,字符流顶层是Reader和Writer这两个 抽象类 ,因此就从这里开始本文。

Reader

Reader是定义Java的字符输入流的抽象类,该类的所有方法在出错的情况下都将引发IOException。Reader类中有这些方法:

Writer

Writer是定义字符输出流的抽象类,所有该类的方法都返回一个void值并在出错的条件下引发IOException。Writer类中的方法有:

FileReader和FileWriter

FileReader类创建了一个可以读取文件内容的Reader类,最常用的 构造方法 是:

1、 file Reader(String fileName)

2、FileReader(File file)

FileWriter创建了一个可以写文件的Writer类,最常用的构造方法是:

1、FileWriter(String fileName)

2、FileWriter(String fileName, boolean append)

3、FileWriter(File file)

其中第二个构造方法,如果append为true,那么输出是追加到文件结尾的。FileWriter类的创建不依赖文件是否存在,在创建文件之前,FileWriter将在创建对象时打开它来作为输出。如果试图打开一个只读文件,那么将引发一个IOException。看一下FileWriter和FileReader的使用,现在D盘目录下没有”writer.txt”:

public static void main(String[] args) throws Exception
{
 File file = new File("D:/writer.txt");
 Writer out = new FileWriter(file);
 // 声明一个String类型对象
 String str = "Hello World!!!";
 out.write(str);
 out. close ();
 
 // 读文件操作
 Reader in = new FileReader(file);
 // 开辟一个空间用于接收文件读进来的数据
 char c0[] = new char[1024];
 int i = 0;
 // 将c0的引用传递到read()方法之中,同时此方法返回读入数据的个数
 i = in.read(c0);
 in.close();
 
 if (-1 == i)
 {
 System.out.println("文件中无数据");
 }
 else
 {
 System.out.println(new String(c0, 0, i));
 }
}
 

利用FileWriter和FileReader进行了一次的读写操作,先看一下D盘下是否有”writer.txt”,假如有”writer.txt”那”writer.txt”中又是什么:

看来利用FileWriter写入一个内存中的字符串到文件中是成功了,那么利用利用FileReader读入文件中的内容到内存呢,看一下运行结果:

Hello World!!!
 

打印结果和文件中的内容一致,说明FileReader的操作也成功。

这就是FileWriter和FileReader的使用,和FileOutputStream和 FileInputStream 的使用差不多,不过实际操作中一般不会用FileWriter和FileReader,这将在下一篇文章进行讲解。

文章来源:智云一二三科技

文章标题:Java IO5:字符流

文章地址:https://www.zhihuclub.com/184557.shtml

关于作者: 智云科技

热门文章

网站地图