当先锋百科网

首页 1 2 3 4 5 6 7

Java IO是Java核心API中的一个重要模块,它提供了许多类用于读写数据,主要包括字节流和字符流两种类型,本文将介绍这两种流的区别和使用。

字节流是以字节(byte)为单位进行读写的,主要包括InputStreamOutputStream两类。使用字节流可以读写任意类型的数据,例如图像、音频等二进制文件。

try (InputStream in = new FileInputStream("test.jpg")) {
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) >0) {
// TODO: 处理读取的字节数据
}
} catch (IOException e) {
e.printStackTrace();
}

字符流是以字符(char)为单位进行读写的,主要包括ReaderWriter两类。使用字符流可以方便地读写文本文件。

try (Reader reader = new FileReader("test.txt")) {
char[] buffer = new char[1024];
int len;
while ((len = reader.read(buffer)) >0) {
// TODO: 处理读取的字符数据
}
} catch (IOException e) {
e.printStackTrace();
}

需要注意的是,字符流使用的编码方式是由InputStreamReaderOutputStreamWriter来指定的,默认是按照系统编码方式进行读写。如果要指定其他编码方式,需要手动创建相应的编码器。

try (Reader reader = new InputStreamReader(new FileInputStream("test.txt"), StandardCharsets.UTF_8)) {
// TODO: 使用UTF-8编码方式读取文件内容
} catch (IOException e) {
e.printStackTrace();
}

在使用IO流时,需要注意及时关闭流资源,可以使用try-with-resources语句自动关闭流。

总的来说,字节流适用于读写任意类型的数据,而字符流适用于读写文本数据。