温馨提示×

温馨提示×

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

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

java While循环怎么读文件

发布时间:2026-09-18 19:23:59 来源:亿速云 阅读:97 作者:小樊 栏目:编程语言

在 Java 中,用 while 循环读文件通常配合 输入流 / 缓冲流 / Scanner 来使用。下面按常见场景给你几种标准写法,都很好理解。


一、按行读取(最常用 ✅)

1️⃣ 使用 BufferedReader(推荐)

import java.io.*;

public class ReadFileWhile {
    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();
        }
    }
}

✅ 特点:

  • readLine() 返回一行
  • 读到 null 就结束
  • 适合文本文件

二、按字符读取

import java.io.*;

public class ReadChar {
    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();
        }
    }
}

✅ 适合:

  • 逐个字符处理
  • 小文件或不关心行结构

三、使用 Scanner(简单但稍慢)

import java.io.*;
import java.util.Scanner;

public class ReadScanner {
    public static void main(String[] args) {
        try (Scanner sc = new Scanner(new File("test.txt"))) {

            while (sc.hasNextLine()) {
                String line = sc.nextLine();
                System.out.println(line);
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

四、按字节读取(二进制文件)

import java.io.*;

public class ReadBytes {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("test.bin")) {

            int b;
            while ((b = fis.read()) != -1) {
                // 处理字节
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

五、常见错误 ❌

while (br.readLine() != null) {  // ❌
    // 会丢数据
}

✅ 正确写法:

while ((line = br.readLine()) != null) {
}

总结(怎么选)

场景 推荐方式
文本按行 BufferedReader
简单读取 Scanner
二进制 FileInputStream
大文件 BufferedReader / BufferedInputStream

如果你愿意,可以告诉我:

  • 读的是 文本还是二进制
  • 是否 超大文件
  • Java 版本(Java 8 / 11 / 17)

我可以给你最优写法。

向AI问一下细节

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

AI
助
手