字符流主要用于支持Unicode的文字内容,绝大多数在字节流中所提供的类,都可在此找到对应的类。其中,输入流Reader抽象类帮助用户在Unicode流内获得字符数据,而Writer类则实现了输出。可以利用Reader类是所有字符输入流的父类,而Writer类所有字符输出流的的父类。
Reader类和Writer类
以Reader和Writer为基础派生的一系列类。Reader和Writer都是抽像类。只提供了一系列用于字符流处理的接口。
FileReader类和FileWriter类。
前面的FileInputStream使用字节读取文件,字节流不能直接操作Unicode字符,所以java提供了字符流。
1.FileReader类
FileReader类于读取文件,每次读取文件中的第一个未读取过的字符,并以ASCII码或UTF-8码的形式输入到程序中。语法格式如下:

FileReader fr=new FileReader(filename)
其中文件名必须是文件完整的路径和文件名,如果程序和该文件保存在同一目录下,则可以只用文件名而不需要其路径,FileReader类中的read()方法用来读取字符并返回一个相应的int类型数据。当读到文件的结尾处时,则返回值-1,在完成文件数据的读取后需要使用close()方法关闭打开的文件。

代码如下:

import java.io.*;
public class FileReadDemo {
public static void main(String []args)throws IOException{
//创建一个FileRead类型的对象
FileReader fr=new FileReader("student.txt");
int a=fr.read();//从文件中读取字符并存入a中
while(a!=-1){//判断文件内容是否结束

System.out.print((char)a);//输出读取的字符到控制台
a=fr.read();//读取下一个字符
}
fr.close();//关闭文件 阅读器


}

}

在这个程序中构建一个文件阅读器FileReader的对象实例fr,通过while循环语句调用其read方法依次读取字符,并判断是否到了文件结束出。如果没有到文件结尾,则将读取的整数强制转换为char类型,并输出到控制台中,在程序最后,要关闭流。在声明main()方法时,添加了throwsIOException用来处理输出和输入文件时发生的异常。当然,也可以使用try和catch语句来处理异常。但是如果不需要异常的具体处理方法,则可以只用throws关键字。

2:FileWriter类

FileWriter类用于将数据写入文件语法格式如下:

FileWriter fr=new FileWriter(filename);

其中,文件名必须是文件的完整路径和文件名,如果程序和该文件保存在同一目录下,则可以只用文件名而不需要其他路径。如果该文件名不存在,则系统会自动创建该文件。FileWriter类中的write()方法可以将文字或字符串写入文件中。当完成数据写入操作后,使用close()方法关闭文件。示例代码如下:

import java.io.*;
public class FileWriter {
public static void main(String []args) throws IOException{
//创建一个FileWriter类型的对象
FileWriter fw=new FileWriter();
fw.write("thisismy");//像文件中写入字符串
fw.write("stu");
fw.write("dent");
fw.write(".");//向文件中写入字符
fw.write("txt");
fw.write("这个是我的文件。");
fe.close();

}

}

}

在这个程序中,构建了一个写入器FileWriter对象实例fw,调用其write()方法向文本文件student.txt中写入各种文本。在这个程序中,没有代码捕获异常,而是在main()方法头部使用throws关键字抛出IOException异常,将异常交给虚拟机处理。

字符流和字节流(FileReader类和FileWriter类)的更多相关文章

  1. 字符流;字节流;带缓冲的输入输出流;以及用scanner读文件

    概念: InputStream类是字节输入流的抽象类,是所有字节输入流的父类. OutputStream类是字节输入流的抽象类,是所有字节输出流的父类. In(可以理解为读)Out(可以理解为写) 一 ...

  2. Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

    第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...

  3. [Java] I/O底层原理之一:字符流、字节流及其源码分析

    关于 I/O 的类可以分为四种: 关于字节的操作:InputStream 和 OutPutStream: 关于字符的操作:Writer 和 Reader: 关于磁盘的操作:File: 关于网络的操作: ...

  4. 理解Java中字符流与字节流的区别

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

  5. Java字符流和字节流对文件操作

    记得当初自己刚开始学习Java的时候,对Java的IO流这一块特别不明白,所以写了这篇随笔希望能对刚开始学习Java的人有所帮助,也方便以后自己查询.Java的IO流分为字符流(Reader,Writ ...

  6. Java中字符流与字节流的区别

    字符流处理的单元为2个字节的Unicode字符,分别操作字符.字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组.所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单 ...

  7. 理解Java中字符流与字节流

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可 ...

  8. 理解Java中字符流与字节流的区别(转)

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

  9. java字符流与字节流的区别是什么

    java中字符流与字节流的区别: 1.字节流操作的基本单元为字节:字符流操作的基本单元为Unicode码元. 2.字节流默认不使用缓冲区:字符流使用缓冲区. 3.字节流通常用于处理二进制数据,实际上它 ...

随机推荐

  1. iOS单例的作用和使用

    单例 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 一是某个类只能有一个实例:二是它必须自行创建这个实例:三是它必须自行 ...

  2. C#文字样式

    [字体] 中文名称 英文名称宋体 SimSun黑体 SimHei微软雅黑 Microsoft YaHei微软正黑体   Microsoft JhengHei新宋体   NSimSun新细明体 PMin ...

  3. NHibernate one-to-one

    NHibernate里面one-to-one有两种方式:主键关联和唯一外健关联 主键关联: 两个表拥有相同的主键字段,值相同的关联在一起.典型的应用是一个对象的属性太多,将常用的属性跟不常用的附加属性 ...

  4. 纪念逝去的岁月——C/C++交换排序

    交换排序 代码 #include <stdio.h> void printList(int iList[], int iLen) { ; ; i < iLen; i++) { pri ...

  5. Spring MVC和Struts2的比较的优点

    Spring MVC和Struts2的区别: 机制:spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的.以前认为filter是 ...

  6. php by oneself

    在php里面写html代码真的很麻烦,最近学到了一个新的方法: <html> <head> <title>PHP</title> <meta ht ...

  7. About_PHP

    所谓PHP: 超文本预处理器 外文名称 Hypertext Preprocessor 编程范型 面向对象.命令式编程 php就是比js更高端的一种语言. 语法有两种: <?php      ?& ...

  8. lightetreeview

    http://www.16css.com/menu/905.html 其他树形菜单:很好--1.http://www.cnblogs.com/zhhh/archive/2011/11/25/22637 ...

  9. SQL语句判断是否为今天或昨天

    方法一 select * from AAA where to_char(a,'yyyymmdd') = to_char(sysdate,'yyyymmdd'); select * from AAA w ...

  10. java类加载机制

    使用某个类是发生的事情 加载->链接(验证.准备.解析)->初始化->可以使用 加载:将class文件字节码内容加载到内存当中,并将这些静态数据转换成方法区中的运行时数据结构 在堆中 ...