码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA基础复习一 字符流FileRead

时间:2020-07-05 19:09:07      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:基本   null   其它   com   print   复习   写法   dwr   world   

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];
            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();
            }
        }
    }

}

JAVA基础复习一 字符流FileRead

标签:基本   null   其它   com   print   复习   写法   dwr   world   

原文地址:https://www.cnblogs.com/elnimo/p/13246983.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!