亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java I/O 核心技术:流、文件操作与标准输入输出

java.io 包提供了全面的 I/O 支持,核心抽象是流——数据的有序序列。流分两大类:

字节流与字符流

字节流

处理 8 位字节,核心类:FileInputStream、FileOutputStream。适用于图片、音视频等二进制数据。

try (FileInputStream in = new FileInputStream("input.txt");
     FileOutputStream out = new FileOutputStream("output.txt")) {
    int c;
    while ((c = in.read()) != -1) out.write(c);
}

使用 try-with-resources 自动关闭流(Java 7+),避免资源泄漏。

字符流

处理 16 位 Unicode 字符,核心类:FileReader、FileWriter。内部基于字节流但按字符读写,适合文本文件。

try (FileReader in = new FileReader("input.txt");
     FileWriter out = new FileWriter("output.txt")) {
    int c;
    while ((c = in.read()) != -1) out.write(c);
}

标准流

Java 提供三个预定义标准流:

流对象典型设备
标准输入System.in键盘
标准输出System.out屏幕
标准错误System.err屏幕
try (InputStreamReader cin = new InputStreamReader(System.in)) {
    System.out.println("输入字符,'q' 退出");
    char c;
    do { c = (char) cin.read(); System.out.print(c); } while (c != 'q');
}

文件读写核心类

FileInputStream 常用方法

方法说明
read()读取单字节,返回 int,-1 表示末尾
read(byte[] b)批量读入字节数组,返回读取字节数
available()返回可读字节数估计值
close()关闭流,释放资源

FileOutputStream 常用方法

方法说明
write(int b)写入单字节
write(byte[] b)写入字节数组
close()关闭流

综合示例:写入并读回字节

byte[] data = {11, 21, 3, 40, 5};
try (FileOutputStream os = new FileOutputStream("test.txt");
     FileInputStream is = new FileInputStream("test.txt")) {
    for (byte b : data) os.write(b);
    int size = is.available();
    for (int i = 0; i < size; i++) System.out.print((char)is.read() + " ");
}

文件与目录操作

java.io.File 类代表文件/目录路径,提供跨平台路径处理。

创建目录

new File("/tmp/user/java/bin").mkdirs(); // 自动创建完整路径

列出目录内容

File dir = new File("/tmp");
String[] names = dir.list(); // 仅文件/目录名
File[] files = dir.listFiles(); // 获取 File 对象数组,更实用
for (File f : files) System.out.println(f.getName() + (f.isDirectory() ? "/": ""));

最佳实践建议

  1. 优先使用 try-with-resources 管理流生命周期
  2. 大文件复制使用缓冲流(BufferedInputStream/BufferedOutputStream)或 NIO Files.copy() 提升性能
  3. 文本处理优先用字符流(BufferedReader/BufferedWriter)
  4. 指定字符集(如 UTF-8)避免乱码:new FileReader(file, StandardCharsets.UTF_8)(Java 11+)

java

  1. C 语言输入输出(I/O)精通:scanf() 与 printf() 详解
  2. Python 文件 I/O:掌握文件操作、读写与管理
  3. Java 变量与字面量:全面指南
  4. 精通 Java 输入输出:打印、读取与格式化数据
  5. Java 类与对象:实用指南
  6. Java 抽象类与抽象方法完全指南
  7. 精通 Java 嵌套类与内部类:类型、示例与最佳实践
  8. Java throw 与 throws 深度解析:异常处理实战指南
  9. 掌握 Java Scanner:读取文本、数字与复杂类型的综合指南
  10. 掌握 Java 自动装箱与拆箱:实战示例与最佳实践
  11. 精通 Java:理解对象、类与核心 OOP 概念
  12. 掌握 Java 日期时间:构造器、方法与最佳实践