一、基本介绍
文件流是用于从文件读取数据或向文件写入数据的流(Stream)。Java提供了多种文件流类,它们都继承自java.io
包中的InputStream
和OutputStream
类。
二、常用的文件流类
1、FileInputStream
:用于从文件中读取数据的输入流。
2、FileOutputStream
:用于向文件中写入数据的输出流。
3、BufferedInputStream
和BufferedOutputStream
:提供缓冲的输入输出流,可以提高读写效率。
4、DataInputStream
和DataOutputStream
:提供方法读取和写入Java基本数据类型。
5、ObjectInputStream
和ObjectOutputStream
:用于对象的序列化和反序列化。
6、PrintWriter
:用于写入字符文本到文件。
7、FileReader
和FileWriter
:用于读写字符文件。
三、示例代码
使用 FileInputStream
和 FileOutputStream
读取和写入文件
// 写入文件
try (FileOutputStream fos = new FileOutputStream("example.txt")) {
String content = "Hello, World!";
fos.write(content.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
// 读取文件
try (FileInputStream fis = new FileInputStream("example.txt")) {
int content;
while ((content = fis.read()) != -1) {
System.out.print((char) content);
}
} catch (IOException e) {
e.printStackTrace();
}
使用 BufferedInputStream
和 BufferedOutputStream
提高效率
// 写入文件
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("example.txt"))) {
String content = "Hello, World!";
bos.write(content.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
// 读取文件
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("example.txt"))) {
int content;
while ((content = bis.read()) != -1) {
System.out.print((char) content);
}
} catch (IOException e) {
e.printStackTrace();
}
使用 DataInputStream
和 DataOutputStream
读写基本数据类型
// 写入文件
try (DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("example.dat")))) {
dos.writeInt(123);
dos.writeDouble(456.789);
} catch (IOException e) {
e.printStackTrace();
}
// 读取文件
try (DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("example.dat")))) {
int i = dis.readInt();
double d = dis.readDouble();
System.out.println("Int: " + i + ", Double: " + d);
} catch (IOException e) {
e.printStackTrace();
}
使用 PrintWriter
写入文本文件
// 写入文本文件
try (PrintWriter pw = new PrintWriter("example.txt")) {
pw.println("Hello, World!");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
使用 FileReader
和 FileWriter
读写字符文件
// 写入文本文件
try (FileWriter fw = new FileWriter("example.txt")) {
fw.write("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
}
// 读取文本文件
try (FileReader fr = new FileReader("example.txt");
BufferedReader br = new BufferedReader(fr)) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
四、注意事项
在Java中,使用try-with-resources
语句可以自动关闭资源,这是处理流时的一个好习惯,因为它可以防止资源泄露。如果你有具体的文件流操作需求或者遇到了问题,可以提供更多的细节,我会尽力帮助你。