Java获取文件内容IO流

news/2024/11/28 0:43:10/

文章目录

  • InputStream和Reader
  • Scanner
  • NIO
  • 外传

一般读取文件类的使用字符流即可

InputStream和Reader

InputStream和Reader是Java IO中的两个重要的抽象基类,InputStream是二进制流,Reader是字符流。使用InputStream或者Reader读取文件内容可以帮助我们读取文本文件(非二进制文件)的内容。

下面是一个使用Reader读取文件内容的示例代码:


File file = new File("test.txt");
try {FileReader reader = new FileReader(file);BufferedReader br = new BufferedReader(reader);String str;while ((str = br.readLine()) != null) {System.out.println(str);}br.close();reader.close();
} catch (IOException e) {e.printStackTrace();
}

使用FileReader类读取文件内容,并将FileReader对象传入BufferedReader类中以便于一次读取一行,然后逐行读取并输出文件内容。

Scanner

Scanner是Java内置的一个读取用户输入的类,他也可以用于读取文件内容。使用Scanner读取文件内容需要先创建File对象,并将其传入Scanner构造函数中。

下面是一个使用Scanner读取文件内容的示例代码:

File file = new File("test.txt");
try {Scanner scanner = new Scanner(file);while (scanner.hasNextLine()) {System.out.println(scanner.nextLine());}scanner.close();
} catch (FileNotFoundException e) {e.printStackTrace();
}

使用Scanner类读取文件内容,并通过while循环和hasNextLine()方法逐行读取文件内容并输出到控制台。

NIO

Java NIO(New IO)是从Java 1.4开始引入的一组新IO API。相较于之前的IO API,NIO提供了更高效的IO操作和更多的控制选项。下面是一个使用NIO读取文件内容的示例代码:

File file = new File("test.txt");
try {FileInputStream fileInputStream = new FileInputStream(file);FileChannel fileChannel = fileInputStream.getChannel();ByteBuffer byteBuffer = ByteBuffer.allocate((int) file.length());fileChannel.read(byteBuffer);byteBuffer.flip();byte[] bytes = byteBuffer.array();System.out.println(new String(bytes, 0, bytes.length));fileInputStream.close();
} catch (IOException e) {e.printStackTrace();
}

使用FileInputStream读取文件内容,并调用getChannel()方法获取FileChannel对象,然后调用read()方法将文件内容读入到ByteBuffer缓冲区中。最后通过flip()方法将缓冲区设置为读模式,并通过byteBuffer.array()将缓冲区中的内容转换为字节数组,再通过new String()方法将字节数组转换为字符串并输出到控制台。

外传

😜 原创不易,如若本文能够帮助到您的同学
🎉 支持我:关注我+点赞👍+收藏⭐️
📝 留言:探讨问题,看到立马回复
💬 格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥

http://www.ppmy.cn/news/1078796.html

相关文章

代码随想录训练营 DP01

代码随想录训练营 DP01 509. 🌸斐波那契数🌸code 70. 🌸爬楼梯🌸code 746. 🌸使用最小花费爬楼梯🌸code 509. 🌸斐波那契数🌸 斐波那契数 (通常用 F(n) 表示)…

六、员工信息分页+启用/禁用员工账号(前端经典大数/精度丢失问题)

员工信息分页 整体流程: 1、创建mybatisplus配置类 在config包下创建mybatisplusconfig /*** 配置MybatisPlus分页插件*/ Configuration //既然是配置类,要加配置类的注解 public class MybatisPlusConfig {Beanpublic MybatisPlusInterceptor mybatis…

Vue: 声明式导航(router-link)的跳转传参的两种方式

声明式导航-跳转传参 文章目录 声明式导航-跳转传参1. 查询参数传参代码示例:2. 动态路由传参 动态路由参数可选符 只要提到了声明式导航,就得想到(router-link) 1. 查询参数传参 语法: to"path?参数名值"对…

VMware tools的安装以及按钮灰色的解决方法

VMware tools的安装 ** 注意:** 新版本的 VMware 会自动安装的 VMware tools,如何测试 VMware tools 呢?在Windows 系统里复制一段话,能粘贴到 Ubuntu 系统里终端里,说明 VMware tools 已经安装了。 没有安装的请参考…

鉴源实验室 | 软件代码结构化覆盖测试-分支覆盖

作者 | 李伟 上海控安安全测评部总监 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 引言: 上一篇开始我们介绍白盒的代码结构覆盖率测试,已经完成了语句覆盖测试的讲解,本篇我们介绍分支覆盖。 01…

js对中文进行base64编码和解码操作,解决中文乱码问题

我使用github api的接口获取文件内容,然后使用atob进行解码,但是发现:乱码.......糟心啊 所以就有了我封装的方法: export const encode64 (str) > {// 首先,我们使用 encodeURIComponent 来获得百分比编码的UTF…

vue3 页面显示中文,分页显示中文

vue3 分页默认为英文 ,但想要中文显示 那么在App.vue中的代码为三步即可,引入中文,声明中文 ,绑定中文; 1. import zhCn from element-plus/es/locale/lang/zh-cn; 2. let locale zhCn; 3. :locale&q…

Oracle常用权限处理

对于Oracle来说,用户等于Schema,创建用户即创建Schema -- 创建用户 create user TCK_TEXT identified by "TCKTCK"; --赋予登陆权限 grant connect to TCK_TEXT; --查看权限列表 select * from user_role_privs ; select * from user_sys_priv…