io流-字符流和字节输入流(Reader)
字符流
当使用字节流读取文本文件时 会出现一些小问题 就是当我们遇到中文字符时 可能不会显示完成的字符 那时以为一个中文字符可能占用多个字节存储 所以java提供一些字符流类 以字符为单位读写数据 专门用于处理文本文件
字节输入流(Reader)
Reader抽象类是表示用于读取字符流的所有类的超类 可以读取字符信息到内存中 它是隶属于java.io包下
共性功能方法
public void close():关闭此流并释放与此流相关联的任何系统资源 public int read():从输入读取一个字符 public int read(Char[] cbuf):从输入流中读取一些字符 并将它们存储到字符数组cbuf中
子类FileReader
FileReader
FileReader:文件字符输入流
作用:把硬盘文件中的数据以字符的方式读取到内存中
构造方法
FileReader(String fileName) FileReader(File file)
参数
String fileName 文件的路径
File file一个文件
FileReader构造方法的作用:
1.创建一个FileReader对象
2.会把FileReader对象指向要读取的文件
字符输入流的使用步骤:
1.创建FileReader对象 构造方法中绑定要读取的数据源
2.使用FileReader对象中的方法read读取文件
3.释放资源
案例:读取E盘下的file文件夹内的b.txt的字符
有中文、英文和数组
读取一个字符代码:
public static void main(String[] args) throws Exception { FileReader fr = new FileReader("E:\\file\\b.txt"); int read = fr.read(); System.out.println((char)read); fr.close(); }
运行结果:
读取全部字符的代码:
public static void main(String[] args) throws Exception { FileReader fr = new FileReader("E:\\file\\b.txt"); int len=0; while ((len=fr.read())!=-1){ System.out.println((char)len); } fr.close(); }
运行结果
使用char数组读取字符代码:
public static void main(String[] args) throws Exception { FileReader fr = new FileReader("E:\\file\\b.txt"); char[] chars=new char[1024]; int len=0; while ((len=fr.read(chars))!=-1){ /* String类的构造方法 String(char[] value)把字符数组转换为字符串 String(char[] value,int offset,int count)把字符数组的一部分转换为字符串 offset数组的开始索引 count转换的个数 */ System.out.println(new String(chars,0,len)); } fr.close(); }
运行结果: