Java文本文件读写常用方法与代码实例

周叙
周叙
发布时间:2026-10-13 | 5人浏览过
原创

Java提供了丰富的IO类库处理文本文件。本文整理常用的文件读写方案,包括基于字节流的PrintStream、字符流的PrintWriter与BufferedWriter,以及高效的BufferedReader读取方式,并附具体代码与原理说明。

写文本数据

Java中写入文本文件主要有三种常见方式,分别基于不同的流类型和缓冲策略。操作前需注意:若文件不存在,多数构造函数会自动创建新文件;若文件已存在且未开启追加模式,内容将被覆盖。

第1步:使用FileOutputStream结合PrintStream写入

目的:利用底层字节流配合标准输出流特性进行简单文本写入。
入口:java.io.FileOutputStream 和 java.io.PrintStream。
动作:创建文件输出流,包装为PrintStream后调用println方法逐行写入。

import java.io.*;
public class A {
  public static void main(String args[]) {
    FileOutputStream out;
    PrintStream ps;
    try {
      out = new FileOutputStream("a.txt");
      ps = new PrintStream(out);
      ps.println("qun qun.");
      ps.println("fei fei");
      ps.close();
    } catch (Exception e) {
      System.out.println(e.toString());
    }
  }
}

第2步:使用FileWriter结合PrintWriter写入

目的:使用字符流简化编码处理,并通过PrintStream风格的API写入。
入口:java.io.FileWriter 和 java.io.PrintWriter。
动作:初始化FileWriter,外层包装PrintWriter,执行print/println后必须手动close()释放资源。

import java.io.*;
public class B {
  public static void main(String args[]) {
    FileWriter fw;
    PrintWriter pw;
    try {
      fw = new FileWriter("b.txt");
      pw = new PrintWriter(fw);
      pw.print("qunqu n ");
      pw.println("feiefi ss");
      pw.print("qunqu n ");
      pw.close();
      fw.close();
    } catch (IOException e) {
      System.out.println(e.toString());
    }
  }
}

第3步:使用BufferedWriter实现高效缓冲写入

目的:通过内部缓冲区减少I/O系统调用次数,提升大批量文本写入效率。
入口:java.io.FileWriter 和 java.io.BufferedWriter。
重要参数:write方法的offset和count参数可控制写入区间。
完成状态:调用flush()确保缓冲区数据落盘,随后关闭流。

import java.io.*;
public class C {
  public static void main(String args[]) {
    String str_written = "This is a simple example";
    try {
      FileWriter fwriter = new FileWriter("c.txt");
      BufferedWriter bfwriter = new BufferedWriter(fwriter);
      bfwriter.write(str_written, 0, str_written.length());
      bfwriter.flush();
      bfwriter.close();
    } catch (IOException e) {
      System.out.println(e.toString());
    }
  }
}

进阶:BufferedWriter追加模式

若需保留原文件内容并在末尾添加新数据,需在FileWriter构造函数中传入true参数开启追加模式,并使用newLine()生成换行符。

import java.io.*;
public class C_Append {
  public static void main(String args[]) {
    String str_written = "This is a simple example";
    try {
      // true表示以追加模式打开文件
      FileWriter fwriter = new FileWriter("c.txt", true);
      BufferedWriter bfwriter = new BufferedWriter(fwriter);
      bfwriter.newLine(); // 插入新行
      bfwriter.write(str_written, 0, str_written.length());
      bfwriter.flush();
      bfwriter.close();
    } catch (IOException e) {
      System.out.println(e.toString());
    }
  }
}

读文本数据

读取文本时,选择正确的输入流能显著影响性能。以下是两种典型的读取实现。

第4步:使用FileInputStream结合DataInputStream读取

目的:通过字节流直接读取文件内容,适用于简单的字节级访问。
入口:java.io.FileInputStream 和 java.io.DataInputStream。
动作:循环检测available()返回值非零则继续读取,使用readLine()获取字符串。

import java.io.*;
public class A_Read {
  public static void main(String args[]) {
    try {
      FileInputStream fstream = new FileInputStream("a.txt");
      DataInputStream in = new DataInputStream(fstream);
      while (in.available() != 0) {
        String a = in.readLine();
        System.out.println(a);
        System.out.println(a.length());
      }
      in.close();
    } catch (Exception e) {
      System.out.println(e.toString());
    }
  }
}

第5步:使用FileReader结合BufferedReader高效读取

目的:利用缓冲机制一次性加载多行数据到内存,减少磁盘I/O频率,适合大文件读取。
入口:java.io.FileReader 和 java.io.BufferedReader。
完成判断:当readLine()返回null时,表示读取完毕。

import java.io.*;
public class B_Read {
  public static void main(String args[]) {
    try {
      FileReader fr = new FileReader("a.txt");
      BufferedReader br = new BufferedReader(fr);
      String str;
      int count = 0;
      while ((str = br.readLine()) != null) {
        count++;
        System.out.println(count + " : " + str);
      }
      br.close();
      fr.close();
    } catch (Exception e) {
      System.out.println(e.toString());
    }
  }
}

综上所述,BufferedWriter与BufferedReader通过引入缓冲区机制,在单次I/O操作中处理更多数据,是处理文本文件时推荐的高效方案。实际开发中,建议优先选用字符流(Reader/Writer)处理文本,以避免编码转换问题。

以上就是Java文本文件读写常用方法的详细内容,更多关于Java IO流操作的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表