当前位置: 首页 > news >正文

文件流---------获取文件的内容到控制台

总流程:先创建一个文本文件------->里面写入一些内容(纯字母和字母加文字)----------->

然后通过输入流获取文件里面的内容,两种方式。

1.第一种,获取单个的字符 ,先创建文件 ,java.txt

        //路径为D盘,文件名为java.txt
        String path = "D:\\java.txt";
        //创建一个文件对象,用来准备创建文件
        File file = new File(path);
        //进行判断D盘下是否存在java.txt文件,如果没有那么将创建
        if (!file.exists()){
            file.createNewFile();
            System.out.println("文件创建成功");
        }else {
            System.out.println("文件已存在");
        }

 

2.准备在文件里面写入一些内容,比如hello,world,并且保存。(纯字节)

3.准备读取用文件流,通过read方法获取返回值,用char将返回值转换为原内容。

        //创建文件流的对象,用来进行读取
        FileInputStream fileInputStream = new FileInputStream(path);
        //fileInputStream.read() 通过文档你可以发现,返回结果是int类型,
        // 所以这里用int接收,-1代表读取结束
        int len ;
        //由于要输出获取的值,需要用循环获取
        while ((len = fileInputStream.read()) != -1){
            //由于len是数字,需要转换为字符,所以用字符类型接收
            System.out.print((char)len);
        }

      

4.如果说该文件内部,还有汉字,那么将会出现乱码,因为这个是一个一个字节读取方式,汉字可能占取3个字节,所以会出现乱码,就不建议使用这种 方式。看演示:

会发现后面的汉字全部变成乱码。所以不能用字节流获取带字符的内容

5.那么我们可以使用另外一种方式,利用数组的形式,一次性获取多个字节,

       //创建文件流的对象,用来进行读取
        FileInputStream fileInputStream = new FileInputStream(path);
        //fileInputStream.read() 通过文档你可以发现,返回结果是int类型,

        //定义一个8个大小的空间
        byte[] buf = new byte[15];

        // 所以这里用int接收,-1代表读取结束
        int len ;
        //由于要输出获取的值,需要用循环获取
        while ((len = fileInputStream.read(buf)) != -1){
            //由于len是数字,需要转换为字符,所以用字符类型接收
            System.out.print(new String(buf,0,len));
        }

通过数组一次性获取多个字节,然后将返回值返回的方式,可以获取文件内的中文

相关文章:

  • 火影 遇上 python Baby_Brother_GGY
  • TypeScript 的 interface 接口
  • 文件上传靶场
  • 类型转换
  • ArkTS基础语法:从声明到类型的深度解析
  • 系统与网络安全------网络通信原理(5)
  • nlp面试重点
  • 算法差分详解 + 总结
  • lx2160 LSDK21.08 firmware 笔记 - 1.bl31.bin 链接脚本 bl31.ld.S 分析
  • JavaWeb 课堂笔记 —— 09 MySQL 概述 + DDL
  • 基于贝叶斯方法的地震动分析及AI拓展
  • mysql安装-MySQL MGR(Group Replication)+ ProxySQL 架构
  • 前端 react+ant design ,后端 springboot +mysql+redis 全栈项目零基础小白从服务器初始化开始部署上线超详细保姆级教程
  • Ubuntu24.04 编译 Qt5 和 Qt6 源码
  • Android Cmake构建的项目,需不需要配置指定ndk及版本
  • 动态路由, RIP路由协议,RIPv1,RIPv2
  • MarkDown 输出表格的方法
  • 信息安全管理与评估2022国赛正式卷一阶段答案截图
  • [leetcode]第445场周赛
  • 亲手打造可视化故事线管理工具:开发全流程、难点突破与开发过程经验总结
  • “异常”只停留在医院里,用艺术为“泡泡宝贝”加油
  • 跨文化戏剧的拓荒者与传承者——洪深与复旦剧社的百年回响
  • 孙卫东会见巴基斯坦驻华大使:支持巴印两国实现全面持久停火
  • 俄乌拟在土耳其举行会谈,特朗普:我可能飞过去
  • 何立峰:中方坚定支持多边主义和自由贸易,支持世贸组织在全球经济治理中发挥更大作用
  • 云南多地突查公职人员违规饮酒:公安局门口开展酒精吹气测试