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();
    }
运行结果:

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号