FileReader类: 用于读取字符流的一个类
构造方法:
FileReader(File file)
创建一个新的 FileReader ,给出 File读取。
FileReader(FileDescriptor fd)
创建一个新的 FileReader ,给定 FileDescriptor读取。
FileReader(String fileName)
创建一个新的 FileReader ,给定要读取的文件的名称。
方法:
.read()
读取一个字符
.read(char[] cbuf)
读取一个字符串
.......
很多重载的方法
.close()
关闭流
.....
还有可以看API
例子:
这里把异常抛出,不进行捕捉了
demo.txt 文本文件中放着
abcde
import java.io.FileReader;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("demo.txt");
int ch = fr.read(); //读取一个
System.out.println(ch); 输出
}
}
运行结果:
97
如果要让它输出原本的a,则需要进行强制类型转换
运行结果:
a
如果我们想要它全部输出的话,可以用循环
import java.io.FileReader;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("demo.txt");
int ch= 0;
while((ch = fr.read()) != -1) {
System.out.print((char)ch); //输出
}
}
}
运行结果:
利用数组进行存储再进行读取
例子:
import java.io.FileReader;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("demo.txt");
char[] ch = new char[3];
int len = 0;
len = fr.read(ch);
System.out.println(len+":"+new String(ch));
}
}
运行结果:
如果我们多次取值呢?
import java.io.FileReader;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("demo.txt");
char[] ch = new char[3];
int len = 0;
len = fr.read(ch);
System.out.println(len+":"+new String(ch));
len = fr.read(ch);
System.out.println(len+":"+new String(ch));
len = fr.read(ch);
System.out.println(len+":"+new String(ch));
}
}
运行结果:
为什么会这样子呢?
我们第一次的时候数组是空的
于是把abc放进去之后
len = 3
后面继续读取 因为后面已经没有空间了,所以会重头开始
于是len = 2
因为第三次读取因为已经到底了
len = -1 告知错误
所以还是输出原来的
所以我们可以重新写一个输出
例子:
import java.io.FileReader;
import java.io.IOException;
public class Demo {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("demo.txt");
char[] ch = new char[3];
int len = 0;
while((len = fr.read(ch)) != -1) {
System.out.println(len+":"+new String(ch,0,len));
}
}
}
运行结果: