zoukankan      html  css  js  c++  java
  • JAVA基础复习-字符流FileRead

    IO流主要分为四大类,虽然流的处理类有很多,但是都是从四个基本的抽象类中派生而来的

    四种抽象类的IO流:

    1. InputStream
    2. OutputStream
    3. Read
    4. Writer
      本节使用字符流FileRead来写一个标准的示例,以后其它的流也可参考此步骤书写

    读入操作:

    package com.winson.iotest;
    
    import org.junit.Test;
    
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    
    /**
     * @description: 字符流FileRead使用示例
     * @date: 2020/7/5 16:50
     * @author: winson
     */
    public class FileReadWriterTest {
    
        /**
         * 1、read()的理解:返回读入的一个字符,如果达到文件末尾,返回-1
         * 2、异常的处理:为了保证流资源一定可以执行关闭操作,需要使用try-catch-finally处理
         * 3、读入的文件一定要存在,否则就会报FileNotFoundException
         */
        @Test
        public void test1() {
            FileReader fileReader = null;
            try {
                //1、实例化File类的对象,指明要操作的文件
                File file = new File("hello.txt");
                //2、提供具体的流
                fileReader = new FileReader(file);
                //获取流的字符编码
                String encoding = fileReader.getEncoding();
                System.out.println(encoding);
                //3.读取流中的数据
    //        方式一
    //        int read = fileReader.read();
    //        while (read != -1) {
                //将代表字符的数字转为字符
    //            System.out.print((char) read);
    //            read = fileReader.read();
    //        }
    //        方式二
                int data;
                while ((data = fileReader.read()) != -1) {
                    System.out.print((char) data);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                //4.流的关闭操作
                try {
                    if (fileReader != null) {
                        fileReader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        /**
         * test1()方法的升级写法,更有效率
         */
        @Test
        public void test2() {
            FileReader fileReader = null;
            try {
                //1、实例化File类的对象,指明要操作的文件
                File file = new File("hello.txt");
                //2、提供具体的流
                fileReader = new FileReader(file);
                //获取流的字符编码
                String encoding = fileReader.getEncoding();
                System.out.println(encoding);
                //3.读取流中的数据
    //        方式一
                //错误的写法:结果为:helloworld123ld
    //            char[] chars = new char[5];
    //            int len;
    //            while ((len = fileReader.read(chars)) != -1) {
    //                for (int i = 0; i < chars.length; i++) {
    //                    System.out.print(chars[i]);
    //                }
    //            }
    //            方式一
                //正确的写法
                char[] chars = new char[5];
                //len:记录每次读入到chars数组中的字符的个数
                int len;
                while ((len = fileReader.read(chars)) != -1) {
                    for (int i = 0; i < len; i++) {
                        System.out.print(chars[i]);
                    }
                }
    ////        方式二
    //            int data;
    //            while ((data = fileReader.read()) != -1) {
    //                System.out.print((char) data);
    //            }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                //4.流的关闭操作
                try {
                    if (fileReader != null) {
                        fileReader.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
    }
    
    
  • 相关阅读:
    已知前序中序后序中的两种,如何求另一种
    sql(上)例题
    sql语句顺序/包含执行顺序和书写顺序
    VScode中文乱码问题
    好用的后台管理模板Bootstrap3
    手把手教你用Typora自动上传到picgo图床【教程与排坑】
    解决GitHub网页githubusercontent地址无法访问问题
    Java学习+面试指南(转)
    Linux C/C++ 方向学习经验【转】
    Scrapy学习笔记(一)
  • 原文地址:https://www.cnblogs.com/elnimo/p/13246983.html
Copyright © 2011-2022 走看看