JAVA IO流文本文件读入方法(read方法读入数据)

2023-10-29

在字符流通常都使用read方法读入数据,而read方法一般都两种调用方式。

首先先创建一个文件,如Hello.txt,里面输入HelloWorld!

第一种是使用read的空参调用:read()

  read()从输入流中读入一个字符,若当前位置无数据则返回-1

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class textFileReader1 {
    public static void main(String[] args) throws IOException {

        //1.File类的实例化
        //在main中要用绝对路径
        File file = new File("D:\\Hello.txt");

        //2.FileReader流的实例化
        FileReader fr = new FileReader(file);

        //3.数据读入
        int data1 = fr.read();   //从输入流中读入一个字符,若当前位置无数据则返回-1
        System.out.println("用read()输出: ");
        while(data1 != -1){
            System.out.print((char) data1);
            data1 = fr.read();
        }
        //4.流的关闭
        fr.close();
    }

}

输出结果:

第二种是使用read的有参调用:read(char[]  cbuf)

read(char[]  cbuf)是最多读入cbuf.length个字符,若当前位置无数据则返回-1

//这是伪代码,框架和read()一致
//3.数据读入
System.out.println("用read(char[] cbuf)输出: ");
        char[] cbuf = new char[5] ;
        int data2;
        while((data2 = fr.read(cbuf)) != -1){
            // 第一种输出
/*            String str = new String(cbuf,0,data2);
            System.out.print(str);*/

            //第二种输出
            for (int i = 0; i < data2; i++) {
                System.out.print(cbuf[i]);
            }
        }

输出结果:

在学习read(char[]  cbuf)方法的过程中发现了一点问题:

1.如果将i的截止条件换成cbuf.length,则输出结果就不能达到预期效果

        char[] cbuf = new char[5] ;
        int data2;
        while((data2 = fr.read(cbuf)) != -1){
            for (int i = 0; i < cbuf.length; i++) {
                System.out.print(cbuf[i]);
            }
        }

输出结果:

这是因为首先第一次读入Hello这5个字符然后输出(如下图),第二次读入World输出,第三次则是第二次读入的数据的第一个位置替换成!,也就是将!读入到cbuf[0]的位置,剩下数据则是orld(如图)。而如果i截止到cbuf.length则是将整个读入的数据输出也就是输出HelloWorld!orld。

2.如果我们以下这样实现方法,则会出现一直循环Hello

        char[] cbuf = new char[5];
        int data2 = fr.read(cbuf);
        while(data2 != -1){
            for (int i = 0; i < data2; i++) {
                System.out.print(cbuf[i]);
            }
        }

输出结果:

这是因为data2读入的只是Hello,然后进入到for循环,输出Hello,而data2一直不等于-1就陷入了死循环,则一直输出Hello。

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

JAVA IO流文本文件读入方法(read方法读入数据) 的相关文章

  • 如何制作行业标准的桌面Java应用程序? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • UnknownHostException:名称或服务未知

    我正在尝试使用 com squareup okhttp 中的 OkHttpClient 从 API 返回一些数据 我遇到了一些错误 我最终能够克服这些错误 但我无法克服这个主机异常错误 并且这里似乎没有任何内容足够具体到我的情况能够解决 下
  • 我们可以实例化一个抽象类吗?

    在一次采访中 有人问我 我们是否可以实例化一个抽象类 我的回答是 不 我们不能 但是 面试官告诉我 错了 我们可以 我对此争论了一下 然后他告诉我自己在家尝试一下 abstract class my public void mymethod
  • 将数据传递到表单时的重定向后获取?

    我有几个场景 servlet 需要将数据从数据库检索到的记录传递到 JSP 中的表单 目前 我将此信息存储在请求中 使用 RequestDispatcher 转发到页面 一切都很好 然而 这不符合 PRG 模式 AFAIK 并且当然意味着刷
  • 在循环中使用 if 语句? - 加工

    假设我必须在 for 循环中使用 if 语句 并且 for 循环在特定条件下触发 而 if 语句仅在 for 循环达到特定阶段时触发 例如 条件是一个计数器 当发生特定事件 例如球从屏幕上掉下来 时 该计数器会进行计数 每次球穿过屏幕时 都
  • 搜索 JTable 时 - 未获得正确的 ID

    所以我尝试在搜索名称后单击表 然后在其他表中编辑它 问题是我没有获得正确的 ID 而只获得第一个 ID JTable https i stack imgur com TnNIq png 搜索行动 https i stack imgur co
  • 使用 GIN 注入 Class

    有没有办法注入类类型Class
  • Spring REST 控制器返回带有空数据的 JSON [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个简单的 Spring Boot Web 应用程序 我正在尝试从服务器接收一些数据 控制器返回一个集合 但浏览器收
  • 如何修复XSS漏洞

    我们正在使用 fortify 扫描 java 源代码 它抱怨以下错误 Method abc sends unvalidated data to a web browser on line 200 which can result in th
  • 如何仅使用命令行运行 Maven 创建的 jar 文件

    我需要一些帮助来尝试使用命令行运行以下 Maven 项目 https github com sarxos webcam capture https github com sarxos webcam capture webcam captur
  • 使用pdfbox从pdf中提取图像

    我正在尝试使用 pdfbox 从 pdf 中提取图像 示例 pdfhere http www ignou ac in upload questionpaper CS 74 PDF 但我只得到空白图像 我正在尝试的代码 public stat
  • Java:字符串连接和变量替换的最佳实践[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在 Java 中连接字符串和添加变量值的方法有太多 我应该如何选择一个 优点 缺点 最佳用例等 MessageFormat forma
  • Java - 在特定日期执行方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要在每年的特定日期执行一个方法 我该如何在java中执行此操作 Thanks Chris 按优先顺序排列 The Quartz htt
  • maven默认过滤器目录的好处[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 最近我发现了maven资源过滤并在文档中看到了一条注释 标准目录布局src main filters 资源过滤器文件 我注意到maven不搜索声
  • 使 @Schedule 在集群环境中仅运行一次

    我有两个 tomee 实例集群 每个都有一个方法注释如下 Schedule dayOfWeek public void runMeDaily 我只想每天运行一次这个方法 每天不两次 每个实例一次 我可以使用此处描述的标志仅在一个WebLog
  • Java 有现成的时钟同步解决方案吗?

    我们有一个大型的高性能软件系统 它由多个交互的 Java 进程 不是 EJB 组成 每个进程可以在同一台机器上 也可以在不同的机器上 某些事件在一个进程中生成 然后以不同的方式传播到其他进程以进行进一步处理等 出于基准测试的目的 我们需要创
  • 注意通知持续时间

    是否可以将抬头通知的持续时间设置为无限 现在它只显示 5 秒 已经尝试过不同的事情 例如更改类别 但持续时间始终为 5 秒 这是我的代码 Notification notification notificationBuilder setCa
  • Eclipse IDE - 错误:构建路径指定执行环境 Java SE 1.7

    在 Eclipse 中 我收到一个错误 构建路径指定执行环境Java SE 1 7 工作区中没有安装与此环境严格兼容的 JRE 尝试这个 In Eclipse your project gt properties gt java build
  • Jsplitpane 自动调整大小

    我有一个 JSPlitPane 它们之间有 50 的分隔线 这工作正常 但是 当我在右侧添加一些 JLabels 时 jsplitpane 会忽略我的 50 分隔符 左侧窗格会增加其大小 并会挤压右侧窗格 为什么会发生这种情况以及如何解决
  • 为什么 JDOM 的 getChild() 方法返回 null?

    我正在做一个关于 html 文档操作的项目 我想要现有 html 文档中的正文内容将其修改为新的 html 现在我正在使用 JDOM 我想在我的编码中使用 body 元素 为此 我在编码中使用了 getChild body 但它向我的程序返

随机推荐

  • Java求矩形三角形圆形梯形的面积和周长小程序页面

    用java实现图形面积周长计算器 1 一个接口 public interface Shape default void GetArea 面积 default void GetPerimetter 周长 2 圆形类 import java u
  • 孟岩:什么是通证(token),通证可以干什么?

    孟岩是最早将token翻译成为通证的区块链大咖 这个翻译已经得到到了越来越人的认可 原来它叫代币 孟岩建议把它翻译成通证 以下是孟岩关于通证的注解 孟岩 柏链道捷CEO CSDN副总裁 区块链通证派代表人物 通证的本质 通证 token 可
  • 矩阵求逆操作的复杂度分析(逆矩阵的复杂度分析)

    矩阵求逆操作的复杂度分析 逆矩阵的复杂度分析 1 背景 之前写过一篇关于矩阵复杂度分析的文章 没有想到阅读人数那么多 对于IT相关人士来说 从代码层次再结合基本数学知识 就能够很好地理解矩阵的复杂度如何计算得到和分析 其中一位读者提出 矩阵
  • 现代循环神经网络-1.门控循环单元(GRU)【动手学深度学习v2】

    文章目录 1 门控循环单元 GRU 1 1 门控隐状态 A 重置门与更新门 B 候选隐状态 C 隐状态 1 2 GRU的实现 A 从零实现 B 简洁实现 1 门控循环单元 GRU GRU是一个比较新的提出来的 在LSTM之后提出 但是相比L
  • Java接口分页调用的设计

    设计一 Test void t1 int pageNo 0 int pageSize 20 int total do pageNo 调用接口 返回数据 获取总页数 total 102 System out println 第 pageNo
  • 教务管理系统遇到的问题(回答面试官提问用)

    面试官 你做这个项目遇到了什么问题 怎么解决的 我 当时写了一个接口 是关于多个用户查询的 用户有老师 学生和管理员 他们查询的有奖项和文件 奖项和文件是两张表 这造成了很多问题 第一个问题是请求参数过多 有关于文件表和奖项表判断的参数 有
  • 华为OD机试真题-过滤组合字符串【2023Q1】

    题目内容 数字0 1 2 3 4 5 6 7 8 9分别关联 a z 26个英文字母 0 关联 a b c 1 关联 d e f 2 关联 g h i 3 关联 j k l 4 关联 m n o 5 关联 p q r 6 关联 s t 7
  • G2的一些常用配置项

    gt 本文介绍下G2的一些常用配置项 Chart图表的属性 图表的属性直接在代码上介绍 可直接复制到项目上根据实际需求可以选择配置 const chart new G2 Chart container c1 必选 指定图表容器 可以传入该
  • M600Pro操作流程

    ipad平板地面站操作 1 DJI GO 检查项 飞机状态是否为 GPS 模式 且显示起飞准备完毕 2 飞行模式为 P 档 遥控器模式是否正确 遥控器电量是否充足 其他箭头指向处 为正常 电池电量 99 各电池之间差异不超过 3 4 电池电
  • winCE中采用DMA传输数据的方法

    转载请标明是引用于 http blog csdn net chenyujing1234 对于文章中有什么意见或是需要代码的可以留言联系我 1 DMA入口 DDM控制器能服务的外围设备配置信息的结构体 typedef struct BOOL
  • 单目相机测距

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 单目相机测距 一 理论 1 像素坐标系 1 相机坐标系 1 转换到大地坐标系 二 代码实现 1 使用matlab找到相机参数 2 使用opencv进行测距 总结 一 理论 先
  • Windows 环境下 Python3 安装 cryptography

    操作系统 win7 语言 Python 3 6 包 cryptography 3 4 7 因为工作需要 需要安装python的 cryptography包 但是屡次安装失败 特总结安装过程 以供大家借鉴 1 安装Rust 初次安装 cryp
  • 数字化变革的难点和解决方式

    了解了数字化企业的特征 还不代表企业能转型成功 从互联网1 0时期开始至今 中国传统 企业数字化转型十余年 整体效果并不理想 因为在推动转型过程中面临各种由于技能不足 和机制不足交织在一起形成的固有难点 转型推进难点 1 定义不清 这是企业
  • Sqlalchemy filter与filter_by查询语法

    摘要 https www cnblogs com kaerxifa p 13391722 html 摘要2 https blog csdn net gymaisyl article details 96601798 filter与filet
  • java部署和调用智能合约

    java部署和调用智能合约 下载安装npm和solc 1 安装gcc yum install gcc gcc c 2 安装node wget https npm taobao org mirrors node v10 14 1 node v
  • java中删除文件/文件夹的3种方法

    1 通过io删除文件 通过递归逐层删除文件信息 param filePath public static void deleteFileByIO String filePath File file new File filePath Fil
  • insert oracle用法,insert into select的实际用法,insertselect

    insert into select的实际用法 insertselect INSERT INTO SELECT语句 语句形式为 Insert into Table2 field1 field2 select value1 value2 fr
  • 【Linux】进程信号

    1 理解信号 1 信号 能够识别并做出行为的一种指令 2 信号来临的时候不一定能够立即对信号做出处理 但是并不影响信号的产生 3 信号来临 gt 时间窗口 gt gt 被处理 结果是要处理的但是需要时间 4 对待信号的处理方法 1 默认2
  • vue父组件向子组件传值

    子组件
  • JAVA IO流文本文件读入方法(read方法读入数据)

    在字符流通常都使用read方法读入数据 而read方法一般都两种调用方式 首先先创建一个文件 如Hello txt 里面输入HelloWorld 第一种是使用read的空参调用 read read 从输入流中读入一个字符 若当前位置无数据则