IO流 --BufferedReader

1. 如何一行一行读取文件?

 或者BufferedReader 的子类:

(idea如何查看一个类的的子类?)

 工具类:

package com.springboot.demo.util;

import java.io.*;

/**
 * @program: springboot
 * @description:
 * @author: gyg
 * @create: 2021-08-29 13:35
 **/
public class IoUtils {




    /**
     * LineNumberReader 类使用示例
     */
    public static void writeToFile(String filePath,String content) {

         OutputStreamWriter outputStreamWriter = null;
        try {
            //构造LineNumberReader实例 ,指定编码集 防止乱码
            outputStreamWriter = new OutputStreamWriter(new FileOutputStream(filePath), "utf-8");

            outputStreamWriter.write(content);
            // flush()方法起到强制写出的效果,在调用close()方法前,调用用flush()方法,这样能保证数据完整性
            outputStreamWriter.flush();

        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            //outputStreamWriter
            try {
                if (outputStreamWriter != null) {
                    outputStreamWriter.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

    }

    /**
     * LineNumberReader 类使用示例
     */
    public static String readFromFile(String filePath) {

        // 返回结果集
        StringBuffer logContentBuffer = new StringBuffer();
        // read file
        LineNumberReader lineNumberReader = null;
        try {
            //构造LineNumberReader实例 ,指定编码集 防止乱码
            lineNumberReader = new LineNumberReader(new InputStreamReader(new FileInputStream(filePath),"utf-8"));

            // 将读取到的一行内容 放到 变量里
            String line ;
            // 父类 BufferedReader  就可以 readLine() 一行一行读取 ,
            // 所以  可以不用 LineNumberReader 对象,直接用 BufferedReader   reader=new BufferedReader(new FileReader(file));
            while ((line = lineNumberReader.readLine()) != null) {

                System.out.println("Line " + lineNumberReader.getLineNumber() +
                        ": " + line);
                logContentBuffer.append(line).append("\n");
            }

        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
                 //关闭lineNumberReader
            try {
                if (lineNumberReader != null) {
                    lineNumberReader.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }

       return  logContentBuffer.toString();

    }




}
    
    

测试方法:

 @Test
    void LineNumberReaderTest() {


        StringBuffer sb = new  StringBuffer();
        sb.append("1. 12345672345678");
        sb.append("\n");
        sb.append("2. 嘿嘿嘿");
        sb.append("\n");
        sb.append("3. 哈哈哈哈哈");
        sb.append("\n");
        sb.append("4. 呜呜呜呜");
        sb.append("\n");
        // 写入
        IoUtils.writeToFile("G:\\xxljob\\2021-08-29\\mytext.txt",sb.toString());



        //  
        String result = IoUtils.readFromFile("G:\\xxljob\\2021-08-29\\mytext.txt");

        System.out.println(result);
        System.out.println(result);


    }

执行结果:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值