Java是一门可以进行文件读写操作的编程语言,而Java的输入输出流就是这样的一个文件读写系统。本文将介绍Java输入输出流的基础概念、输入流和输出流的区别、以及常用的输入输出类。
一、基础概念
输入流和输出流通常表示程序与外部资源(文件、网络连接等)的数据输入输出方式。Java I/O流是与平台无关的,并且Java API提供了标准I/O,因此可以使用与特定操作系统无关的代码进行I/O操作,而且不需要手动释放资源。
Java中有两种类型的I/O流:字节流和字符流。I/O流中,字节流用于读取和写入原始8位字节,而字符流用于读取和写入16位Unicode字符。
二、输入流和输出流的区别
Java输入流和输出流的最大区别在于方向。输入流是读取程序输入的数据,然后将其写入内存或硬盘,它们从外部读取数据并将其传输到内部程序。而输出流是从内部程序读取数据,然后传输到外部环境,即将程序产生的数据发送到外部环境。
Java中的输入流和输出流通常是成对使用的。例如,通过使用一个文件的读取流,我们可以使用一个文件写入流将它写入到另一个位置(或同一位置)。
三、常用输入输出类
1. 字节流
ByteStreams提供了用于处理二进制数据的基础输入和输出操作的类。以下是常用的字节流类:
FileInputStream: 用于从文件中读取数据的字节流。
ByteArrayOutputStream: 用于将数据写入到与 ByteArrayOutputStream实例关联的内部缓冲区的输出流。
BufferedInputStream: 带缓存的输入字节流。
BufferedOutputStream: 带缓存的输出字节流。
2. 字符流
CharacterStreams 提供了用于读写文本数据的基础输入和输出操作的类。以下是常用的字符流类:
FileReader: 用于从文件中读取字符的字符流。
FileWriter: 用于将字符写入文件的输出字符流。
BufferedReader: 带缓存的输入字符流。
BufferedWriter: 带缓存的输出字符流。
3. 数据流
在Java中,数据流是可以读写原始数据类型(int、float、long等)和字符串的类。以下是常用的数据流类:
DataInputStream: 是用于读取Java原始数据类型和字符串的输入流。
DataOutputStream: 实现用于将Java原始数据类型和字符串写入数据流的输出流。
四、输入输出流样例
以下是Java输入输出流的示例:
import java.io.*;
public class Main {
public static void main(String[] args) {
try {
// 创建一个文件
File myFile = new File("myFile.txt");
myFile.createNewFile();
// 创建一个输出字节流
OutputStream os = new FileOutputStream(myFile);
// 写入一些数据
byte[] data = "Java输入输出流简介".getBytes();
os.write(data);
// 关闭流
os.close();
// 创建一个输入字节流
InputStream is = new FileInputStream(myFile);
// 读取数据并打印
byte[] b = new byte[1024];
is.read(b);
System.out.println(new String(b));
is.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
这个示例中我们首先创建了一个名为myFile.txt的文件,然后创建一个输出字节流,并写入一些数据。之后,我们创建一个输入字节流来读取这个文件,并将读取的数据打印到控制台上。最后我们关闭了这些流。
总结
Java 输入输出流是Java程序中不可或缺的部分。我们本文介绍了Java输入输出流的基础概念,输入流和输出流的区别,以及常用的输入输出类和相应的示例。这些信息将帮助Java程序员了解如何使用Java的输入输出流进行数据读写操作。