Java输入/输出流
Java的输入/输出流(InputStream/OutputStream)是用于读取和写入数据的一组类和接口。输入流用于从外部源(如文件、网络连接、键盘等)读取数据,而输出流用于将数据写入到外部目标(如文件、网络连接、控制台等)。
主要的输入/输出流类和接口有:
- InputStream:抽象类,用于读取字节流
- OutputStream:抽象类,用于写入字节流
- FileInputStream:用于读取文件的输入流
- FileOutputStream:用于写入文件的输出流
- ByteArrayInputStream:用于将字节数组作为输入流
- ByteArrayOutputStream:用于将字节数组作为输出流
- InputStreamReader:用于将字节流转换为字符流
- OutputStreamWriter:用于将字符流转换为字节流
- BufferedReader:用于高效读取字符流
- BufferedWriter:用于高效写入字符流
使用输入流时,可以通过read()方法逐个读取字节,并将其转换为需要的数据类型,如字符、整数等。使用输出流时,可以通过write()方法将数据逐个写入到目标中。
下面是一个简单的示例,用于从文件读取数据并将数据写入到另一个文件中:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopyExample {
public static void main(String[] args) {
try (FileInputStream in = new FileInputStream("input.txt");
FileOutputStream out = new FileOutputStream("output.txt")) {
int byteRead;
while ((byteRead = in.read()) != -1) { // 读取字节流
out.write(byteRead); // 写入字节流
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述示例打开一个FileInputStream
用于从input.txt
文件读取数据,并使用FileOutputStream
将数据写入到output.txt
文件中。通过循环读取和写入字节,直到读取完整个文件。
当使用完输入/输出流时,应调用close()
方法来关闭流,以释放资源。在Java 7及以上版本中,可以使用try-with-resources语句来自动关闭流。