Java文本文件读写常用方法与代码实例
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流操作的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









