package com.yyq;
import java.io.*;
public class FileReaderDemo {
    public static void main(String[] args) {
        FileReader fr = null;
        try{
            //创建文件读取流用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。
            //要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader,字符流肯定有字符编码
            //------  第二种方式   -----------
            fr = new FileReader("Demo.txt");
            //创建文件读取所使用的空间大小 
            // 定义一个字符数组,用于存储读到的字符个数
            // 定义的缓冲区是 2k 一个字符是两个字节
            char[] buf = new char[1024];
            //read方法:好好理解
            //read 方法 读取一个字符数组,该read函数返回的是读取的字符个数
            //倘若读完了,没有值可以读了,就返回-1 倘若是读取的最后一次,返回的是读取的个数
            // 该方法buf 字符数据相当于一个循环队列,可以循环使用,循环更新
            // 因此构造字符串的时候要 构造新的字串传的时候  new string(buf,0,len))
            // 缓冲区  
            int len = fr.read(buf);
            
            System.out.println(new String(buf,0,len));
            //创建一个文件读取流对象,和指定名称的文件相关联
            // 要保证该文件必须要存在,如果不存在会发生异常:FileNoFoundException
            // -------第一种方式---------
            /*fr = new FileReader("a.txt");
            // int read 读取单个字符: 返回结果是单个字符的ASCII表的值
            int ch = 0;
            while((ch = fr.read())!=-1){
                System.out.print((char)ch);
            }*/
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally{
            try{
                if(fr!=null){
                    fr.close();
                }
            }
            catch(IOException e){
                e.printStackTrace();
            }
        }
    }
    
}



package com.yyq;
import java.io.*;
public class FileReaderDemo {
    public static void main(String[] args) {
        FileReader fr = null;
        try{
            //创建文件读取流用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。
            //要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader,字符流肯定有字符编码
            //------  第二种方式   -----------
            fr = new FileReader("Demo.txt");
            //创建文件读取所使用的空间大小 
            // 定义一个字符数组,用于存储读到的字符个数
            // 定义的缓冲区是 2k 一个字符是两个字节
            char[] buf = new char[1024];
            //read方法:好好理解
            //read 方法 读取一个字符数组,该read函数返回的是读取的字符个数
            //倘若读完了,没有值可以读了,就返回-1 倘若是读取的最后一次,返回的是读取的个数
            // 该方法buf 字符数据相当于一个循环队列,可以循环使用,循环更新
            // 因此构造字符串的时候要 构造新的字串传的时候  new string(buf,0,len))
            // 缓冲区  
            int len = fr.read(buf);
            
            System.out.println(new String(buf,0,len));
            //创建一个文件读取流对象,和指定名称的文件相关联
            // 要保证该文件必须要存在,如果不存在会发生异常:FileNoFoundException
            // -------第一种方式---------
            /*fr = new FileReader("a.txt");
            // int read 读取单个字符: 返回结果是单个字符的ASCII表的值
            int ch = 0;
            while((ch = fr.read())!=-1){
                System.out.print((char)ch);
            }*/
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally{
            try{
                if(fr!=null){
                    fr.close();
                }
            }
            catch(IOException e){
                e.printStackTrace();
            }
        }
    }
    
}