IO(Input/Output)流是Java中用于读取和写入数据的机制。它是连接程序和外部资源(比如文件、网络连接、数据库等)的桥梁,使程序能够实现数据的输入和输出。
Java中的IO流可以分为两种类型:字节流(Byte Stream)和字符流(Character Stream)。
字节流(Byte Stream)
字节流可以处理二进制数据。它们的基本操作是使用字节(byte)作为数据单元。
Java中的字节流有两个基本类:InputStream(输入流)和OutputStream(输出流)。它们是所有字节流类的超类。
InputStream
InputStream是所有输入流类的基类。它提供了一系列的read()方法,用于读取字节并将其放入一个字节数组中。常用的子类有FileInputStream(读取文件)、ByteArrayInputStream(从字节数组中读取)等。
下面是使用InputStream从文件中读取数据的示例:
try {
InputStream is = new FileInputStream("example.txt");
int data;
while ((data = is.read()) != -1) {
System.out.print((char) data);
}
is.close();
} catch (IOException e) {
e.printStackTrace();
}
OutputStream
OutputStream是所有输出流类的基类。它提供了一系列的write()方法,用于将字节写入到输出流中。常用的子类有FileOutputStream(写入文件)、ByteArrayOutputStream(写入字节数组)等。
下面是使用OutputStream将数据写入文件的示例:
try {
OutputStream os = new FileOutputStream("example.txt");
String data = "Hello, World!";
os.write(data.getBytes());
os.close();
} catch (IOException e) {
e.printStackTrace();
}
字符流(Character Stream)
字符流可以处理文本数据。它们的基本操作是使用字符(char)作为数据单元。
Java中的字符流有两个基本类:Reader(读取字符流)和Writer(写入字符流)。它们是所有字符流类的超类。
Reader
Reader是所有字符输入流类的基类。它提供了一系列的read()方法,用于读取字符并将其放入一个字符数组中。常用的子类有FileReader(读取文件)、StringReader(从字符串中读取)等。
下面是使用Reader从文件中读取数据的示例:
try {
Reader reader = new FileReader("example.txt");
int data;
while ((data = reader.read()) != -1) {
System.out.print((char) data);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
Writer
Writer是所有字符输出流类的基类。它提供了一系列的write()方法,用于将字符写入到输出流中。常用的子类有FileWriter(写入文件)、StringWriter(写入字符串)等。
下面是使用Writer将数据写入文件的示例:
try {
Writer writer = new FileWriter("example.txt");
String data = "Hello, World!";
writer.write(data);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
总结
Java IO流提供了灵活而强大的读取和写入数据的机制。通过理解和掌握不同类型的IO流,我们可以更好地处理输入和输出操作。
字节流适合处理二进制数据,而字符流适合处理文本数据。无论是字节流还是字符流,它们都有各自对应的输入流和输出流类。在使用IO流时,我们应根据具体需求选择合适的流类,并学习其相应的读写操作方法。
本文来自极简博客,作者:温暖如初,转载请注明原文链接:Java IO流的分类及使用方法详解