Java中的IO流是一种机制,用于与存储在计算机硬盘或网络上的数据进行交互。I/O是输入和输出的缩写,实际上涵盖了多种数据传输方向,其中包括读入数据(输入)和写出数据(输出)到其他地方。在Java中,输入和输出统称为流。
Java中的IO流用于将数据从源读取到目的地,数据源和目的地可以是文件、socket、内存中的缓存等等。可以使用标准的输入和输出流System.in和System.out进行简单的输入和输出操作,但对于更复杂的操作,如希望读取和写入不同类型的数据,或者需要多个线程同时在共享数据源上进行读取和写入,就需要使用更高级别的流。
Java中的IO流被分为两类:字节流和字符流,字节流操作的是1个字节,字符流操作的是2个字节。字节流用于处理二进制数据,如图像和音频文件,而字符流则用于处理文本数据,如文本文件等。它们都有一些基本的类,这些类的命名方式通常是以InputStream或OutputStream结尾的类为字节流,以Reader或Writer结尾的类为字符流。
以下是两个示例,向文件中写入文本数据并从文件中读取文本数据:
// 向文件中写入文本数据
try (FileOutputStream fos = new FileOutputStream("myFile.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, StandardCharsets.UTF_8);
BufferedWriter writer = new BufferedWriter(osw)) {
writer.write("Hello, World!");
} catch (IOException e) {
e.printStackTrace();
}
// 从文件中读取文本数据
try (FileInputStream fis = new FileInputStream("myFile.txt");
InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
BufferedReader reader = new BufferedReader(isr)) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
在第一个示例中,我们使用了OutputStreamWriter将字符串写入文件。OutputStreamWriter是一个字符流,它是将字符编码转换为字节编码,因此我们需要指定编码方式。另外,需要将OutputStreamWriter包装在BufferedWriter中以提高写入性能。FileOutputStream是一种字节流,用于将字节以二进制格式写入文件中。
在第二个示例中,我们使用了InputStreamReader将文本数据从文件中读取。像OutputStreamWriter一样,它还需要指定文件的编码方式。我们将InputStreamReader包装在BufferedReader中以提高性能。FileInputStream用于从文件中读取字节。当我们读取文本文件时,通常使用FileReader,但是在这个例子中,我们从文件中读取的是字节, 因此我们需要使用字节流和字符流的组合,将字节流转换为字符流。
这些示例只是Java IO流的一个细节。IO流非常灵活,可以用于各种类型的数据操作, 具有多种选项和配置方式,使您可以定制适合特定需求的I/O体验。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的IO流是什么? - Python技术站