Java获取文件内容IO流

文章目录

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

InputStream和Reader

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

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

java 复制代码
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读取文件内容的示例代码:

java 复制代码
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读取文件内容的示例代码:

java 复制代码
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()方法将字节数组转换为字符串并输出到控制台。

外传

复制代码
😜 原创不易,如若本文能够帮助到您的同学
🎉 支持我:关注我+点赞👍+收藏⭐️
📝 留言:探讨问题,看到立马回复
💬 格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥
相关推荐
小小小米粒1 分钟前
Maven Tools
java
禹凕2 分钟前
Python编程——进阶知识(多线程)
开发语言·爬虫·python
Ulyanov5 分钟前
基于Pymunk物理引擎的2D坦克对战游戏开发
python·游戏·pygame·pymunk
铉铉这波能秀5 分钟前
LeetCode Hot100数据结构背景知识之字典(Dictionary)Python2026新版
数据结构·python·算法·leetcode·字典·dictionary
蜡笔小马14 分钟前
10.Boost.Geometry R-tree 空间索引详解
开发语言·c++·算法·r-tree
IOsetting15 分钟前
金山云主机添加开机路由
运维·服务器·开发语言·网络·php
kali-Myon15 分钟前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
我是咸鱼不闲呀19 分钟前
力扣Hot100系列20(Java)——[动态规划]总结(下)( 单词拆分,最大递增子序列,乘积最大子数组 ,分割等和子集,最长有效括号)
java·leetcode·动态规划
程序媛徐师姐21 分钟前
Python基于爬虫的网络小说数据分析系统【附源码、文档说明】
爬虫·python·python爬虫·网络小说数据分析系统·pytho网络小说数据分析系统·python爬虫网络小说·python爬虫的网络小说数据
清水白石00828 分钟前
深入解析 LRU 缓存:从 `@lru_cache` 到手动实现的完整指南
java·python·spring·缓存