Java 中的 IO 流体系结构是处理输入和输出操作的基础。它包括字节流、字符流以及缓冲流。以下是对常见的 IO 类及其使用示例的详细介绍。
1. 字节流
FileOutputStream
(字节输出流)
FileOutputStream
类用于以字节的形式写入数据到文件中。
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamExample {
public static void main(String[] args) {
String data = "Hello, World!";
try (FileOutputStream fos = new FileOutputStream("output.txt")) {
fos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileInputStream
(字节输入流)
FileInputStream
类用于以字节的形式读取文件数据。
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("output.txt")) {
int content;
while ((content = fis.read()) != -1) {
System.out.print((char) content);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. 字节缓冲流
BufferedOutputStream
(字节缓冲输出流)
BufferedOutputStream
提供了一个缓冲区来提高写入效率。
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferedOutputStreamExample {
public static void main(String[] args) {
String data = "Hello, Buffered World!";
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("buffered_output.txt"))) {
bos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
BufferedInputStream
(字节缓冲输入流)
BufferedInputStream
提供了一个缓冲区来提高读取效率。
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class BufferedInputStreamExample {
public static void main(String[] args) {
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("buffered_output.txt"))) {
int content;
while ((content = bis.read()) != -1) {
System.out.print((char) content);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
3. 字符流
FileReader
(字符输入流)
FileReader
类用于以字符的形式读取文件数据。
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
try (FileReader fr = new FileReader("output.txt")) {
int content;
while ((content = fr.read()) != -1) {
System.out.print((char) content);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileWriter
(字符输出流)
FileWriter
类用于以字符的形式写入数据到文件中。
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterExample {
public static void main(String[] args) {
String data = "Hello, World!";
try (FileWriter fw = new FileWriter("char_output.txt")) {
fw.write(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
4. 字符缓冲流
BufferedReader
(字符缓冲输入流)
BufferedReader
提供了一个缓冲区来提高读取效率,并提供了读取整行的方法。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("char_output.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
BufferedWriter
(字符缓冲输出流)
BufferedWriter
提供了一个缓冲区来提高写入效率,并提供了写入整行的方法。
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriterExample {
public static void main(String[] args) {
String data = "Hello, Buffered World!";
try (BufferedWriter bw = new BufferedWriter(new FileWriter("buffered_char_output.txt"))) {
bw.write(data);
bw.newLine();
bw.write("This is a new line.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
结论
Java IO 流提供了处理文件和数据流的多种方法。字节流用于处理二进制数据,字符流用于处理文本数据,而缓冲流则提供了更高效的读写操作。了解这些流的使用方法和特点,可以帮助你根据不同的需求选择合适的 IO 处理方式。