FileReader 读数据
构造方法:
FileReader(String fileName) 传递要读取的文件名称
成员方法:
int read() 读取单个字符并返回
int read(char[] cbuf) 一次读取一个字符数组的数据,返回的是实际读取字符的个数.
输入流读文件的一般步骤:
1.创建输入流对象
2.调用输入流对象的对数据方法
3.释放资源
举例:打印文件中的内容到公屏上,一次读取一个字符
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class DemoFileReader { public static void main(String[] args) throws IOException { // 创建输入流对象 FileReader fr = new FileReader("a.txt"); int ch; // 调用输入流方法读取数据的方法 /* * ch != -1 ch=fr.read(); 故:(ch = fr.read()) != -1 */ // while ((ch = fr.read()) != -1) { System.out.println((char) ch); } // 释放资源 fr.close(); } }
注意: a.txt必须存在,如果不存在会报系统找不到文件异常
2.上个范例是把文本内容读取出来打印到公屏上,如果是写入到其他文件,是不是就变成复制了呢
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class DemoCopyFile { public static void main(String[] args) throws IOException { //创建输入流对象 FileReader fr = new FileReader("a.txt"); //创建输出流对象 FileWriter fw = new FileWriter("Copya.txt"); int ch; while ((ch = fr.read()) != -1) { fw.write(ch); } //释放资源 fw.close(); fr.close(); } }
上面的例子是一次读写一个字符复制文本文件,效率比较低.接下来我们看看 成员方法中一次一个字符数组的情况.
public class DemoCopyFile { public static void main(String[] args) throws IOException { //创建输入流对象 FileReader fr = new FileReader("a.txt"); //调用输入流对象读取数据的方法 char[] chs = new char[1024]; int len; /*while一共做了三件事 * 1.fr.read(chs)将数据读取到数组中 * 2.len=fr.read(chs) 把读取到的有效个数复制给len * 3.len != -1 判断读取的有效个数是否为-1 * */ while((len = fr.read(chs))!= -1){ System.out.println(new String(chs,0,len)); } fr.close(); } }
在这里什么时候用到字符流呢,一般情况下能够使用系统记事本打开并阅读里面的内容的,我们采用字符流,
时间: 2024-10-21 21:58:45