Java 基础知识之 IO 总结
什么是 IO?
IO(Input/Output,即输入/输出)是计算机领域中非常重要和基础的概念,指计算机与外部设备交换数据的过程。在 Java 中,IO 通常用于读取和写入文件、网络通信以及其他数据源和操作。Java 提供了强大的 IO 支持,为我们提供了便捷的、可靠的、跨平台的数据交换方案。
Java IO 的分类
Java 中 IO 分为几种不同类型,包括:
- 字节流(InputStream 和 OutputStream):用于处理二进制数据
- 字符流(Reader 和 Writer):用于处理文本数据
- 堆内存流(ByteArrayInputStream 和 ByteArrayOutputStream):用于在内存中读写数据
- 文件流(FileInputStream 和 FileOutputStream):用于操作文件
- 缓存流(BufferedInputStream 和 BufferedOutputStream):用于提高性能
Java IO 常用的类和方法
InputStream 和 OutputStream
- InputStream:抽象类,用于读取二进制数据
- OutputStream:抽象类,用于写入二进制数据
在使用 InputStream 和 OutputStream 时,常用的类和方法有:
- FileInputStream 和 FileOutputStream:用于读写文件,提供多种读写方法
- ByteArrayInputStream 和 ByteArrayOutputStream:用于读写内存中的二进制数据
- BufferedInputStream 和 BufferedOutputStream:用于提高性能
- DataInputStream 和 DataOutputStream:用于读写 Java 基本类型数据
- ObjectInputStream 和 ObjectOutputStream:用于读写对象
示例:
// 读取文件内容并写入另一个文件
public static void copyFile(String src, String dst) throws IOException {
try (InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst)) {
byte[] buffer = new byte[4096];
int len;
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
}
}
Reader 和 Writer
- Reader:抽象类,用于读取文本数据
- Writer:抽象类,用于写入文本数据
在使用 Reader 和 Writer 时,常用的类和方法有:
- FileReader 和 FileWriter:用于读写文本文件,提供多种读写方法
- BufferedReader 和 BufferedWriter:用于提高性能
- InputStreamReader 和 OutputStreamWriter:用于编码转换,如 UTF-8 转换成 GBK
- PrintWriter:用于格式化输出
示例:
// 读取文件内容并输出到控制台
public static void printFile(String filename) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
Java NIO
Java NIO(New IO)是 Java 1.4 引入的新的 IO API,它提供了更高效、更灵活和更可扩展的 IO 方案。Java NIO 中的基本概念是通道和缓冲区,它们比传统的 InputStream 和 OutputStream 更加灵活和高效。
在 Java NIO 中,数据被读取到缓冲区中,然后再从缓冲区中写入到通道中,或从通道中读取数据写入到缓冲区中。Java NIO 还提供了选择器(Selector)来实现非阻塞 IO。
示例:
// 从文件中读取内容并输出到控制台
public static void readFileWithChannel(String filename) throws IOException {
try (FileChannel channel = new FileInputStream(filename).getChannel()) {
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (channel.read(buffer) != -1) {
buffer.flip();
System.out.print(Charset.forName("UTF-8").decode(buffer));
buffer.clear();
}
}
}
总结
Java IO 是 Java 编程中非常重要和基础的概念,它提供了强大的数据交换方案。我们可以使用 Java 的不同类型 IO 来读写文件、网络通信以及其他数据源和操作。在 Java 中,IO 有几种类型,包括字节流、字符流、堆内存流、文件流和缓存流等。Java NIO 引入了更高效、更灵活和更可扩展的 IO 方案,提供了更加灵活和高效的通道和缓冲区。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java 基础知识之IO总结 - Python技术站