javaIO流05:FileReader和Filewriter

2023-11-15

FileReader

FileReader是字符流,按照字符来操作io

  1. FileReader的关系继承图

在这里插入图片描述
2. FileReader 相关方法

  • new FileReader(File/String)
  • read():每次读取单个字符,然后返回该字符,如果到文件末尾返回-1
  • read(chat[] ):批量读取多个字符到数组中,返回读取到的字符数,如果到文件末尾返回-1
  • new String(char[]):将数组char[]转换为String
  • new String(char[[],off,len):将数组char[]中从下标off开始往后数len个字符转换为String
  1. FileReader的使用案例
@Test
    public void Reader(){
        //读取的文件位置
        String filePath="D:/IOFile/news5.txt";
        FileReader fileReader=null;
          //定义一个int类型来接收read方法返回的ASCLL码
        int data = 0;
        try {
            fileReader = new FileReader(filePath);
           //read()方法读取一个字符返回一个字符,但这里的字符是以ASCLL码来表示的
            while (( data=fileReader.read())!=-1){
                //输出只需要将int类型的data转换为char
                System.out.print((char)data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Test
    public void Reader2(){
        String filePath="D:/IOFile/news5.txt";
        FileReader fileReader=null;
        int readlen = 0;
        //以数组的方式进行读取,每次读取(new char[个数])个字符
        char[] buf=new char[8];
        try {
            fileReader = new FileReader(filePath);
            while (( readlen=fileReader.read(buf))!=-1){
                System.out.println((new String(buf,0,readlen)));
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fileReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

Filewriter

Filewriter是字符流,按照字符来操作io

  1. Filewriter的关系继承图

在这里插入图片描述
2. Filewriter 相关方法

  • new Filewriter(File/String):会覆盖以前的内容
  • new Filewriter(File/String,true):不会覆盖以前的内容,在以前内容最后进行写入
  • write(int):写入单个字符
  • write(char[]):写入指定数组
  • write(char[],off,len):写入数组char[]中从下标off开始往后数len个字符
  • write(String):写入整个字符串
  • write(String,off,len):写入中字符串从下标off开始往后数len个字符
  • 注意
    Filewriter在使用后必须调用close()方法关闭或者flush()方法刷新,否则写入不到指定的文件中去。
  1. Filewriter的使用案例
@Test
    public void Test(){
        String fileWPath="D:/IOFile/news6.txt";
        FileWriter fileWriter =null;
         char[] cha={'a','b','c'};
        try {
            fileWriter= new FileWriter(fileWPath);
            //write(int):写入单个字符
            fileWriter.write("h");

            //write(char[]):写入指定数组
            fileWriter.write(cha);

//write(char[],off,len):写入数组char[]中从下标off开始往后数len个字符
            fileWriter.write(cha,0,2);
//write(String):写入整个字符串
            fileWriter.write("hello,world");
//write(String,off,len):写入中字符串从下标off开始往后数len个字符
           fileWriter.write("hello,world!",11,1);
            System.out.println("写入字符成功");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                //为什么FileWriter使用后必须关闭或者刷新,否则写入不到指定的文件中去
                //查看close源码
                //close-->se.close-->this.implClose()-->this.writeBytes();
                // writeBytes();直到这里才是将数据写入到文件中
                // 查看flush源码
                //flush--> se.flush();-->this.implFlush();--> this.implFlushBuffer();--> this.writeBytes();
                //发现close和flush最后都要进行writeBytes方法
                //所以如果不调用close或者flush就无法执行writeBytes方法,也就无法写入数据进入文件
                
                //fileWriter.close();
                 fileWriter.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
  1. 为什么 Filewriter在使用后必须调用close()方法关闭或者flush()方法刷新

//为什么FileWriter使用后必须关闭或者刷新,否则写入不到指定的文件中去
//查看close源码
//close–>se.close–>this.implClose()–>this.writeBytes();
// writeBytes();直到这里才是将数据写入到文件中
// 查看flush源码
//flush–> se.flush();–>this.implFlush();–> this.implFlushBuffer();–> this.writeBytes();
//发现close和flush最后都要进行writeBytes方法
//所以如果不调用close或者flush就无法执行writeBytes方法,也就无法写入数据进入文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javaIO流05:FileReader和Filewriter 的相关文章

随机推荐

  • 程序语言翻译器的设计与实现----算术表达式转换四元式(编译原理)

    此篇博客是将前面的内容进行整合并进一步提升 真正实现一个简单表达式语法的编译器 如果有不了解的地方请查看下面链接 词法分析 LR 1 分析 一 LR 1 分析 二 这里说的程序语言编译器是指将算术表达式部分进行翻译 暂时不包括优化以及目标语
  • Failed to execute /linuxrc. Attempting defaults... 解决方案

    今天想移植个根文件系统 使用的板子是友善之臂的S3C2440 这个很多书上都有介绍 难度倒也不是很大 按照手册一步步的来 移植完之后 烧写到flash里面 发现不能运行 怎么回事 检查了一遍 发现和教材上一样 难道教材有问题 在网上找了移植
  • MarshalAs(UnmanagedType.ByValArray, SizeConst = 11)]

    MarshalAs 指示如何在托管代码和非托管代码之间封送数据 简单点说 托管代码是一Microsoft的中间语言 它主要的作用是在 NET Farmework的CLR执行代码前去编译源代码 也就是说托管代码充当着翻译的作用 源代码在运行时
  • 初识网络原理

    目录 局域网 简称LAN 广域网 IP地址 端口号 协议 协议分层 互联网的分层 网络设备的分层 封装和分用 局域网 简称LAN 简单来说就是把两台或多台机器连接在一起 局部组建的一种私有网络 局域网内的主机之间能方便的进行网络通信 而局域
  • Mysql 数据库创建用户,管理用户权限

    一 创建用户 为什么要创建不同的用户呢 因为root用户权限太大 为了安全起见 创建不同的用户 并赋予不同的权限 可以有效保证数据库的安全 1 使用 root 用户登录 Mysql mysql u root p 注意 若 mysql u r
  • 两波形相位差的计算值_连续模式PFC功率MOSFET电流有效值、平均值计算

    中大功率的ACDC电源都会采用有源功率因数校正PFC电路来提高其功率因数 减少对电网的干扰 在PFC电路中 常用的结构是BOOST电路 功率MOSFET工作在开关状态 将输入的电流斩波为和输入正弦波电压同相位的 具有正弦波包络线的开关电流波
  • linux日志清理脚本

    日常日志清理脚本 1 压缩文件 SUFFIX date d yesterday Y m d CURRENT date s echo CURRENT 压缩 FILES data logs shop nohup for file in FILE
  • 技术宅学会几招FFmpeg

    有些时候 我需要对某个视频文件做一些简单的处理 也或者是受亲戚朋友的委托吧 又不好意思推辞 因为人家觉得你是搞技术的 这点小事应该能轻松搞定 但是 我犯不着为这点事去安装一个笨重的多媒体软件 我也不想去网上随便找个免费的小工具 怕它不干净
  • C++ 惯用法之 PIMPL

    背景 PIMPL 是 C 中的一个编程技巧 意思为指向实现的指针 具体操作是把类的实现细节放到一个单独的类中 并用一个指针进行访问 二进制兼容性 概述 二进制兼容是指当库文件升级后所有使用该库的应用程序不必重新编译 其本质就是类的内存布局不
  • 闭环系统的零极点图判定稳定性_负反馈系统

    负反馈的作用机理是 当受外在激励或外界干扰时 系统将通过负反馈抑制或者减弱这种外在激励或者干扰 而使系统达到一个新的平衡状态 负反馈系统在工作过程是一个闭环系统 而分析开环特性只是辅助理解 因为闭环系统不容易模拟 模型不直观 在图1 1 a
  • 测试总结报告写法简单总结

    1 编写目的 编写目的先总的说本文档是什么文档 编写此文档的目的是什么 总的说一下 然后在写以下具体的编写目的 最后的预期读者从需求里粘过来 2 项目背景 从方案中粘项目背景 完全粘过来 不用任何改动 3 测试参考文档 参考文档写任务书和需
  • window重启Nginx的BAT脚本

    1 脚本入参 SET NGINX DIR C Zone nginx 1 21 4 nginx 1 21 4 该路径配置成nginx的根目录文件夹 2 Nginx管理脚本 echo off chcp 65001 color 0a rem 当前
  • C#上位机软件支持中英文多语言切换MultiLanguage

    最近遇到一个项目 客户是国外的 开发上位机程序是在中国 需支持中英文多语言切换 多语言切换思路 使用不同的xml配置文件来映射不同的语言 窗体加载时从默认语言DefaultLanguage xml中读取配置 比如中文语言 对应Chinese
  • 大数据上机基础—HDFS文件操作

    本文为在校学习大数据课程期间 对厦门大学林子雨老师大数据技术原理与应用 第三章 分布式文件系统HDFS学习指南一文进行的整理 方便自己学习查看 原文地址为大数据技术原理与应用 第三章 分布式文件系统HDFS学习指南 操作系统为Ubuntu1
  • Ubuntu下Anaconda安装opencv

    作者 黄钟健 注意 文中 xxx 表示自定义的名称 需要自己根据实际情况替换 一 安装opencv依赖库 在终端上敲入以下命令 sudo apt get install build essential sudo apt get instal
  • react多层循环跳出最外层

    function test let baseCount 5 baseWhile while baseCount let count 10 while count if count 5 break baseWhile console log
  • mac homebrew fatal: not in a git directory

    问题 在用homebrew安装软件时 提示报错 fatal not in a git directory 解决办法 先执行 brew v 出现如下提示 Homebrew 4 0 1 60 g6ad9294 fatal detected du
  • Keras自定义损失函数的4个方法

    百度能够找出来的最原始的资源貌似是这个链接 里面提供了三种方法 但是都不能解决目前我的问题 获取是我没看懂吧 主要我的custom损失函数的参数不是简单的y true y pred 又是从中间层计算loss https spaces ac
  • 驱动篇 -- PMOS管应用

    感谢阅读本文 在接下来很长的一段时间里 我将陆续分享项目实战经验 从电源 单片机 晶体管 驱动电路 显示电路 有线通讯 无线通信 传感器 原理图设计 PCB设计 软件设计 上位机等 给新手综合学习的平台 给老司机交流的平台 所有文章来源于项
  • javaIO流05:FileReader和Filewriter

    FileReader FileReader是字符流 按照字符来操作io FileReader的关系继承图 2 FileReader 相关方法 new FileReader File String read 每次读取单个字符 然后返回该字符