在 Java 中,用 while 循环读文件通常配合 输入流 / 缓冲流 / Scanner 来使用。下面按常见场景给你几种标准写法,都很好理解。
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 |
如果你愿意,可以告诉我:
我可以给你最优写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。