Java IO流详解

作者 : admin 本文共2179个字,预计阅读时间需要6分钟 发布时间: 2024-06-10 共2人阅读

IO流原理

IO流是基于流的概念,它将数据的输入和输出看作是一个连续的流。数据从一个地方流向另一个地方,流的方向可以是输入(读取数据)或输出(写入数据)。

IO流提供了一组丰富的类和方法来实现不同类型的输入和输出操作。

IO流的原理是通过流的管道将数据从源头传输到目标地。

源头可以是文件、网络连接、内存等

目标地可以是文件、数据库、网络等。

IO流分类

Java中的IO流可以按照数据的类型流的方向进行分类。

按数据类型分类

  字节流(Byte Stream):用于处理二进制字节数据

以字节为单位读写数据,适用于处理二进制字节数据,如图像、音频、视频等。常见的字节流类有InputStreamOutputStream

  字符流(Character Stream):用于处理字符文本数据

以字符为单位读写数据,适用于处理字符文本数据。字符流会自动进行字符编码和解码,可以处理多国语言字符。常见的字符流类有ReaderWriter

按流的方向分类

输入流(Input Stream):用于读取数据。

输入流从数据源读取数据,如文件、网络连接等。常见的输入流类有FileInputStreamByteArrayInputStreamSocketInputStream等。

输出流(Output Stream):用于写入数据。

输出流将数据写入到目标地,如文件、数据库、网络等。常见的输出流类有FileOutputStreamByteArrayOutputStreamSocketOutputStream等。

IO流的使用场景

IO流主要用于处理输入和输出操作,适用于以下场景:

文件读写:

通过IO流可以读取和写入文件中的数据,如读取配置文件、写入日志等。

网络通信:

通过IO流可以进行网络数据的传输和接收,如Socket通信、HTTP请求等。

数据库操作:

通过IO流可以将数据读取到内存中,或将内存中的数据写入到数据库中。

文本处理:

过IO流可以读取和写入文本文件,进行文本处理和操作。

常用的IO流类

 字节流类 :

 InputStream:用于从输入源读取字节数据的抽象类。

FileInputStream:从文件中读取字节数据的类。

ByteArrayInputStream:从字节数组中读取字节数据的类。

BufferedInputStream:提供缓冲功能的字节输入流类。

DataInputStream:读取基本数据类型的字节输入流类。

try (InputStream is = new FileInputStream("input.txt");
     BufferedInputStream bis = new BufferedInputStream(is)) {

    int data;
    while ((data = bis.read()) != -1) {
        System.out.print((char) data);
    }
} catch (IOException e) {
    e.printStackTrace();
}

字符流类:

Reader:用于从输入源读取字符数据的抽象类。

FileReader:从文件中读取字符数据的类。

BufferedReader:提供缓冲功能的字符输入流类。

InputStreamReader:将字节流转换为字符流的类。

try (Reader reader = new FileReader("input.txt");
     BufferedReader br = new BufferedReader(reader)) {

    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

输入输出流类

OutputStream:用于向输出目标写入字节数据的抽象类。

FileOutputStream:将字节数据写入文件的类。

ByteArrayOutputStream:将字节数据写入字节数组的类。

BufferedOutputStream:提供缓冲功能的字节输出流类。

DataOutputStream:将基本数据类型写入输出流的类。

try (OutputStream os = new FileOutputStream("output.txt");
     BufferedOutputStream bos = new BufferedOutputStream(os)) {

    String data = "Hello, World!";
    bos.write(data.getBytes());
} catch (IOException e) {
    e.printStackTrace();
}

字符输出流类

Writer:用于向输出目标写入字符数据的抽象类。

FileWriter:将字符数据写入文件的类。

BufferedWriter:提供缓冲功能的字符输出流类。

OutputStreamWriter:将字节流转换为字符流的类。

try (Writer writer = new FileWriter("output.txt");
     BufferedWriter bw = new BufferedWriter(writer)) {

    String data = "Hello, World!";
    bw.write(data);
} catch (IOException e) {
    e.printStackTrace();
}

本站无任何商业行为
个人在线分享 » Java IO流详解
E-->