FileReader读取文件

public class StreamTest01 {
    public static void main(String[] args) {
        FileReader fileReader = null;
        try {
            //实例化File对象,指明要操作的文件
            File file = new File("hello.txt");
            //获取文件绝对路径
            System.out.println(file.getAbsoluteFile());//untitled2\hello.txt
            //提供具体的流 FileInputStream 输入流
            fileReader = new FileReader(file);

            //第一种读取操作,无参read(),是下面代码的简化写法
            //read()方法:从输入流中读取数据的下一个字节,返回 0 到 255 范围内的 int 字节值,如果因为已经到达流末尾而没有可用的字节,则返回值 -1。
//            int data;//定义变量接收char
//            while ((data = fileReader.read()) != -1){
//                System.out.print((char) data);
//            }

//        int data = fileInputStream.read();
//        while (data != -1){
//            System.out.print((char)data);//输出时需要用字符呈现
//            data = fileInputStream.read();//这里相当于.next,继续读取下一个字符
//        }

            //第二种读取操作,调带参的read()
            char[] cbuf = new char[5];//创建数组
            int len;
            //read返回每一次读取字符的个数,每次最多只能读 5 个,如果返回-1说明读取完了
            while((len = fileReader.read(cbuf)) != -1){
                //每一轮循环,都执行 fileReader.read(cbuf) 把字符存入数组,每一轮存入的字符覆盖上一轮存入的字符
                for (int i = 0; i < len; i++) {//变量当前数组存入字符的数量
                    System.out.print(cbuf[i]);//存入几个就遍历几个
                }
                //或者
                //System.out.print(new String(cbuf,0,len));
            }

        } catch (IOException ioException) {
            ioException.printStackTrace();
        } finally {
            //关闭流
            try {
                if (fileReader != null) fileReader.close();
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
        }
    }
}

你可能感兴趣的:(学习笔记,java)