Java IO(二) FileReader
---------------------- android
培训、java培训、期待与您交流! ----------------------
前面谈到了FileWriter当然对应的就有FileReader
前面是往文件里写数据,这个肯定就是在文件里往程序里读数据
在来看看FileReader是怎么使用的
那就要看API里FileReader的构造方法都有哪些!
FileReader(File file)
在给定从中读取数据的 File 的情况下创建一个新 FileReader。
FileReader(FileDescriptor fd)
在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader。
FileReader(String fileName)
在给定从中读取数据的
文件名的情况下创建一个新 FileReader
看完定义咱们在来看看如何使用其方法。
当然还要去父类看方法喽!!
abstract void close() 关闭该流并释放与之关联的所有资源。
void mark(int readAheadLimit)标记流中的当前位置。
boolean markSupported()判断此流是否支持 mark() 操作。
int read() 读取单个字符。
int read(char[] cbuf) 将字符读入数组。
abstract int read(char[] cbuf, int off, int len)将字符读入数组的某一部分。
int read(CharBuffer target)试图将字符读入指定的字符缓冲区。
boolean ready()判断是否准备读取此流。
void reset()重置该流。
long skip(long n)跳过字符。
第一个方法就是close方法,说明这个流也是需要关闭的,但看看好像没有flush方法,那当然close也不需要刷新流中数据了!通过举一反三想想只要是流是不是都需要close的呢?
通过代码看看咱们这个FileReader是怎么读数据的!
经过查看API
发现 read()方法返回值是int类型应该是对应的ASCII码
好了,上代码!
import java.io.*;
class FileReaderDemo
{
public static void main(String[] args)
{
//还是用前面写的文件"abc.java",就在当前目录下的
//根据前面java IO(一)中讲的抛Exception的特性把格式都想好了!
//呵呵,思路泉涌呀!~
FileReader fr;
try
{
fr = new FileReader("abc.java");
int ch = fr.read();
System.out.println(ch);
}
catch (IOException ie)
{
ie.printStackTrace();
}
finally
{
fr.close();
}
}
}
打印出来的结果是73
先看看"abc.java"里面的数据是哪些!
"I like java!! I like MeiMa!!"
就这一行数据
73 不正是对应英文字母大写"I"吗!偶了!
但是我并不能只打印一个数据呀!多打几个行吗?
还是根据前面的思想我加了几条
int ch1 = fr.read();
System.out.println((char)ch1);
int ch2 = fr.read();
System.out.println((char)ch2);
int ch3 = fr.read();
System.out.println((char)ch3);
结果是都打印出来了!
那就来个循环一下搞定,并且我在API中找到控制循环的条件
当read()方法返回-1时说明已经读完了!
ok!太简单了!!~~hold住哦!~
while(fr.read() != -1)
{
int r = fr.read();
System.out.print((char)r);
}
原来这么简单就能读出数据了!
看看结果吧
iejv! ieMia!
坑爹啦~~怎么成这样了?
经过检查发现了问题,为什么在我之前没有遍历过的时候是正常的,因为read()想指针一样是会读一个指针往后移一位。知道这个特性在循环的时候我发现我写了两遍
fr.read()那必须每次小指针都要往后跑的哦!知道哪错了就改呗!
int ch = 0;
while((ch = fr.read()) != -1)
{
System.out.print((char)ch);
}
这下就木有问题啦!
从这个问题可以发现,这不仅仅是一个小问题,看看前面写的东西自己是不是认为都理解了,都掌握了呢?显的太浮躁,编写程序会让你知道怎么做能细心,什么事都要脚踏实地。
---------------------- android培训、java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima