天天看点

IO-字符流-FileReader

FileReader 读数据

构造方法:

FileReader(String fileName) 传递要读取的文件名称

成员方法:

int read() 读取单个字符并返回

int read(char[] cbuf) 一次读取一个字符数组的数据,返回的是实际读取字符的个数.

输入流读文件的一般步骤:

1.创建输入流对象

2.调用输入流对象的对数据方法

3.释放资源

举例:打印文件中的内容到公屏上,一次读取一个字符

<code>import</code> <code>java.io.FileNotFoundException;</code>

<code>import</code> <code>java.io.FileReader;</code>

<code>import</code> <code>java.io.IOException;</code>

<code>public</code> <code>class</code> <code>DemoFileReader {</code>

<code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) </code><code>throws</code> <code>IOException {</code>

<code>// 创建输入流对象</code>

<code>FileReader fr = </code><code>new</code> <code>FileReader(</code><code>"a.txt"</code><code>);</code>

<code>int</code> <code>ch;</code>

<code>// 调用输入流方法读取数据的方法</code>

<code>/*</code>

<code>* ch != -1 ch=fr.read(); 故:(ch = fr.read()) != -1</code>

<code>*/</code>

<code>//</code>

<code>while</code> <code>((ch = fr.read()) != -</code><code>1</code><code>) {</code>

<code>System.out.println((</code><code>char</code><code>) ch);</code>

<code>}</code>

<code>// 释放资源</code>

<code>fr.close();</code>

注意: a.txt必须存在,如果不存在会报系统找不到文件异常

2.上个范例是把文本内容读取出来打印到公屏上,如果是写入到其他文件,是不是就变成复制了呢

<code>import</code> <code>java.io.FileWriter;</code>

<code>public</code> <code>class</code> <code>DemoCopyFile {</code>

<code>//创建输入流对象</code>

<code>//创建输出流对象</code>

<code>FileWriter fw = </code><code>new</code> <code>FileWriter(</code><code>"Copya.txt"</code><code>);</code>

<code>fw.write(ch);</code>

<code>//释放资源</code>

<code>fw.close();</code>

上面的例子是一次读写一个字符复制文本文件,效率比较低.接下来我们看看 成员方法中一次一个字符数组的情况.

<code>//调用输入流对象读取数据的方法</code>

<code>char</code><code>[] chs = </code><code>new</code> <code>char</code><code>[</code><code>1024</code><code>];</code>

<code>int</code> <code>len;</code>

<code>/*while一共做了三件事</code>

<code>* 1.fr.read(chs)将数据读取到数组中</code>

<code>* 2.len=fr.read(chs) 把读取到的有效个数复制给len</code>

<code>* 3.len != -1  判断读取的有效个数是否为-1</code>

<code>*</code>

<code>while</code><code>((len = fr.read(chs))!= -</code><code>1</code><code>){</code>

<code>System.out.println(</code><code>new</code> <code>String(chs,</code><code>0</code><code>,len));</code>

在这里什么时候用到字符流呢,一般情况下能够使用系统记事本打开并阅读里面的内容的,我们采用字符流,

本文转自xinsz08の平行时空博客51CTO博客,原文链接http://blog.51cto.com/xinsz08/1941490如需转载请自行联系原作者

维度2018

继续阅读