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 的相关文章

  • 在 spring-boot 中设置 base-href 和 context-path - Angular 6 应用程序

    我正在构建一个 Web 应用程序 其中 UI 客户端组件是使用 Angular 6 构建的 后端 服务器端 位于 Spring boot 上 申请预计可在 http localhost 8080 FUtility 我通过在 appmodul
  • Java EE 6 和单例

    谁能解释一下在 Java EE 6 应用程序中实现 Singleton 的完整过程 我假设我不应该以声明静态变量的典型方式创建单例 而应该使用 Singleton注解 我必须这样做吗 难道只是声明一下的情况 Singleton就是这样 我还
  • 我在使用 JavaFX 绘制十字时遇到问题

    我正在尝试编写代码 在网格上对角绘制 3 个形状 前两个形状是正方形和圆形 我能做到 然而 第三种形状让我有些悲伤 我应该画一个十字 T 版本 而不是 X 每次我写出代码时 它看起来就像一个侧面 我知道我只是错过了一些简单的东西 但我真的很
  • Android:对于具有 LinearLayout 定义的成员的 ListView,上下文菜单不显示?

    我有一个 ListActivity 和 ListView 并且我已将一些数据绑定到它 数据显示得很好 而且我还为视图注册了一个上下文菜单 当我将列表项显示为简单的 TextView 时 它工作正常
  • 仅使用公钥在 HD 钱包中生成以太坊地址 (bitcoinj/web3j)

    我尝试为使用 bitcoinj 库实现的 HD 钱包密钥生成以太坊地址 但我感到困惑 DeterministicSeed seed new DeterministicSeed some seed code here null 1409478
  • 如果在 addHeader 之前写入正文,HttpServletResponse 会丢失标头吗?

    环境 Java HotSpot TM 64 位服务器 VM 内部版本 16 3 b01 混合模式 tomcat6 当我使用HttpServlet发送html页面时 如下所示 resp getWriter append body body i
  • 在 json 中解析尾随字符

    我正在尝试检查 json 是否有效 并且我遇到了奇怪的行为 当我将一些字符附加到可解析的 json 时 jackson 和 gson 都会解析它 并且它们会忽略尾随字符 我想检查 json 是否严格有效 请帮忙 我尝试了几个标志mapper
  • JTree ConvertValueToText 返回在更改时被截断

    我有一个自定义树实现convertValueToText 此实现取决于某些全局状态 如果返回的字符串比先前返回的字符串更长 实际上我认为更宽 因为以像素为单位触发它 则文本将被截断并用 填充 当重绘是由 取消 选择元素或某个元素引起时 情况
  • 在 libgdx 中渲染 box2d

    我有一个使用 FitViewport 的大小为 800x480 的游戏世界 并且最初使用像素渲染 box2d 实体 固定装置 因此所有物理效果都显得浮动且缓慢 查看文档后 我意识到 box2d 使用度量单位 因此我将 box2d 位置和大小
  • 合并和颜色样式不适用于 Apache POI excel 2003 格式

    在 Apache POI 中 我为某些单元格应用了一些样式并合并了这些单元格 当我在 2010 年或 2007 年打开时 它工作正常 但在 2003 年 格式样式消失了 每次保存 2003 Excel 文件之前都会弹出兼容性检查对话框 请参
  • ThreadPoolExecutor 和队列

    我以为使用线程池执行器 http docs oracle com javase 6 docs api java util concurrent ThreadPoolExecutor html我们可以提交Runnables 要在以下位置执行B
  • 不使用 length() 方法的字符串长度[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何在不使用字符串的情况下找到字符串的长度length String类的方法 str toCharArray length应该管用 或者怎么
  • java中永远不会出现的异常

    我为点和向量编写一个类 我想用它们来计算向量的点和范数 这些是点类和向量类 public class Point public float x y public class MyVector public Point start end 我
  • Jersey 和 Spring 中的全局异常处理?

    我正在使用 Jersey 和 Spring 3 2 以及 Open CMIS 开发 RESTful Web 服务 我没有使用 Spring 的 MVC 模式 它只是 Spring IOC 和 Jersey SpringServlet 控制器
  • 在 Apache Servicemix 4 中的 OSGi 包之间共享配置文件?

    有人能够在 SMX4 中的两个或多个捆绑包之间成功共享配置吗 我正在寻找的是这样的 有一个文件 SMX HOME etc myconfiguration cfg 使此配置 可用 以便使用 Spring dm 通过 OSGi 配置管理将其注入
  • 空检查时可能未初始化错误

    我正在检查变量是否已初始化 但此时 netbeans 给了我variable reader might not have been initialized警告 我该如何解决 抑制这个问题 这是我的代码 摘要 final Reader rea
  • 背景图像隐藏其他组件,例如按钮标签等,反之亦然

    如何解决此代码中组件的隐藏问题 代码运行没有错误 但背景图片不显示 如何更改代码以获取背景图像 使用验证方法时 它在validation 中创建错误 public class TEST public TEST String strm Jan
  • Android Webview:无法调用确定的可见性() - 从未见过 pid 的连接

    我有一个 Android Webview 当我单击链接下载文件 pdf 图像等 时 我收到一条错误消息 Error message Cannot call determinedVisibility never saw a connectio
  • 需要在没有wsdl的情况下调用soap ws

    我是网络服务的新手 这个网络服务是由 siebel 提供的 我需要调用一项网络服务 我的客户向我提供了以下详细信息 这是 SOAP 对于产品 请使用它作为端点 Request
  • 将其元素添加到另一个列表后清除列表

    我正在做一个程序 它获取更多句子作为参数 我制作了 2 个列表 一个称为 propozitie 其中包含每个句子 另一个称为 propozitii 其中包含所有句子 问题是 当我在遇到 后清除 propozitie 列表时 它也会清除 pr

随机推荐

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

    此篇博客是将前面的内容进行整合并进一步提升 真正实现一个简单表达式语法的编译器 如果有不了解的地方请查看下面链接 词法分析 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 每次读取单个字符 然后返回该字符