温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何通过java IO实现文件读取

发布时间:2026-10-02 02:20:45 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

在 Java 中,使用 IO(java.io) 读取文件有多种方式,下面按常用程度和场景给你系统讲一下,并附上示例代码。


一、按字节读取(适合所有文件,如图片、视频)

1️⃣ 使用 FileInputStream

import java.io.FileInputStream;
import java.io.IOException;

public class ReadFileDemo {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("test.txt")) {
            int data;
            while ((data = fis.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

✅ 特点:

  • 一次读一个字节
  • 效率低,不推荐大文件

2️⃣ 使用字节数组(推荐)

try (FileInputStream fis = new FileInputStream("test.txt")) {
    byte[] buffer = new byte[1024];
    int len;
    while ((len = fis.read(buffer)) != -1) {
        System.out.print(new String(buffer, 0, len));
    }
}

✅ 适合:

  • 二进制文件
  • 高效读取

二、按字符读取(适合文本文件)

3️⃣ 使用 FileReader

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

public class FileReaderDemo {
    public static void main(String[] args) {
        try (FileReader fr = new FileReader("test.txt")) {
            int ch;
            while ((ch = fr.read()) != -1) {
                System.out.print((char) ch);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

✅ 适合:

  • 纯文本文件
  • 自动按字符处理

4️⃣ 使用 BufferedReader(最常用 ✅)

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class BufferedReaderDemo {
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

✅ 优点:

  • 按行读取
  • 带缓冲区,效率高
  • 实际开发最常用

三、读取为字符串(Java 7+)

5️⃣ 使用 Files(NIO,但底层仍是 IO)

import java.nio.file.Files;
import java.nio.file.Paths;

public class FilesDemo {
    public static void main(String[] args) throws Exception {
        String content = new String(Files.readAllBytes(Paths.get("test.txt")));
        System.out.println(content);
    }
}

✅ 适合:

  • 小文件
  • 快速读取全部内容

四、方式对比总结

方式 适用场景 是否推荐
FileInputStream 二进制文件 ✅
FileReader 文本文件 ⚠️
BufferedReader 文本读取 ✅✅✅
Files.readAllBytes 小文件 ✅

五、最佳实践建议

✅ 文本文件:

BufferedReader + FileReader

✅ 二进制文件:

BufferedInputStream + FileInputStream

✅ 始终使用 try-with-resources(自动关闭流)


如果你愿意,我可以:

  • 给你 大文件读取方案
  • 讲 IO 与 NIO 的区别
  • 写 完整项目示例

你更想了解哪一种?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手