Java-IO(四)——字符流
来源:互联网 发布:编写软件的语言 编辑:程序博客网 时间:2024/06/05 19:11
一、字符流
字节流提供了处理任何类型输入/输出操作的功能(因为对于计算机而言,一切都是0和1,只需把数据以字节形式表示就够了),但它们不可以直接操作Unicode字符,因为一个Unicode字符占用2个字节,而字节流一次只能操作一个字节。既然Java的口号就是"一次编写、处处运行",那么包含直接的字符输入/输出的支持是必要的。因此就有一些字符输入/输出流,之前已经说明过了,字符流顶层是Reader和Writer这两个抽象类,因此就从这里开始本文。
二、Reader
Reader是定义Java的字符输入流的抽象类,该类的所有方法在出错的情况下都将引发IOException。Reader类中有这些方法:
方 法作 用abstract void close()关闭该流并释放与之关联的所有资源void mark(int readAheadLimit)标记流中的当前位置boolean markSupported()判断此流是否支持mark()操作int read()从文件中读取单个字符int read(char[] cbuf)从文件中读取字符到cbufabstract int read(char[] cbuf, int off, int len)将文件中的字符读入cbuf数组,从off位置开始,读取len个字符。三个read方法在字符可用、发生I/O异常或者已经到达流的末尾前,此方法会一直阻塞int read(CharBuffer target)试图将文件中的字符读入指定的字符缓冲区boolean ready()判断是否准备读取此流voi reset()重置该流long skip(long n)跳过n个字符
三、Writer
Writer是定义字符输出流的抽象类,所有该类的方法都返回一个void值并在出错的条件下引发IOException。Writer类中的方法有:
方 法作 用Writer append(char c)将制定字符添加到此writerWriter append(CharSequence csq)将制定字符序列添加到此writerWriter append(CharSequence csq, int start, int end)将指定字符序列的子序列添加到此writer.Appendableabstract void close()关闭此流,但要先flush()它abstract void flush()刷新该流的缓冲void write(char[] cbuf)将cbuf中的内容写入文件abstract void write(char[] cbuf, int off, int len)将字符数组cbuf中从off开始的len个字节写入文件void write(int c)写入单个字符到文件中void write(String str)写入字符串到文件中void write(String str, int off, int len)写入str从off位置开始的len个字符到文件中
四、FileReader和FileWriter
FileReader类创建了一个可以读取文件内容的Reader类,最常用的构造方法是:
1、FileReader(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的使用,现在E盘testFIle文件夹下没有"testWriter.txt":
public static void main(String[] args) {File file = new File("E:" + File.separator + "testFile" + File.separator + "testWriter.txt");try {fileWriterReaderTest(file);} catch (IOException e) {e.printStackTrace();}}public static void fileWriterReaderTest(File file) throws IOException{Writer out = new FileWriter(file);// 声明一个String类型对象String str = "FileWriter Test!!!";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(i==-1){ System.out.println("文件中数据为空");}else{ System.out.println(new String(c0,0,i));}}利用FileWriter和FileReader进行了一次的读写操作,先看一下E盘testFile文件夹下是否有"testWriter.txt",假如有"testWriter.txt"那"testWriter.txt"中又是什么:
看来利用FileWriter写入一个内存中的字符串到文件中是成功了,那么利用利用FileReader读入文件中的内容到内存呢,看一下运行结果:
FileWriter Test!!!
打印结果和文件中的内容一致,说明FileReader的操作也成功。
这就是FileWriter和FileReader的使用,和FileOutputStream和FileInputStream的使用差不多,不过实际操作中一般不会用FileWriter和FileReader,这将在下一篇文章进行讲解。
本文出处:Java IO(四)——字符流
- Java-IO(四)——字符流
- Java IO流——字符流
- java.io——字符流
- Java IO(二):IO流——字符流
- JAVA【IO四】字节流和字符流
- Java IO字符流常见类进行分析(四)
- 黑马程序员——JAVA基础------IO流(四)----字节字符转换流和缓冲流
- java IO(字符流)
- Java Io 字符流
- Java 字符流 IO
- 17、Java入门—Java IO流之字符流
- Java IO流(四)
- Java IO流——字节流和字符流
- JAVA IO操作——字节流和字符流
- Java基础——IO流(上)之字符流
- 黑马程序员——Java基础---IO流(字符流)
- Java IO流系列(二)—— 字符流
- Java IO——字节流与字符流
- ubuntu16.04 安装搜狗拼音输入法
- BigDecimal加减乘除运算
- 链表相关面试算法题 java实现
- 《Java程序设计》第五章-例题
- 代码重构(一)-用函数对象代替函数(replace method with method object)
- Java-IO(四)——字符流
- Codeforces Round #394 (Div. 2) 题解
- Wireshark 抓包分析 RTSP/RTP/RTCP 基本工作过程
- python︱HTML网页解析BeautifulSoup学习笔记
- Android笔记之快速简单的适配
- 【LeetCode】C# 35、Search Insert Position
- JSP中的请求转发和请求包含小解
- 用PHP压缩CSS
- Paths 升级(DFS序+线段树+LCA+树形DP)