了解Java InputStream和OutputStream类

    科技2022-07-11  82

    文章目录

    1. 流的种类1.1 字节流1.2 字符流 2. Java InputStream类2.1 InputStream的子类2.2 创建一个InputStream2.3 InputStream的方法2.4 示例:使用InputStream的FileInputStream 3. Java OutputStream类3.1 OutputStream的子类3.2 创建一个OutputStream3.3 OutputStream的方法3.4 示例:使用OutputStream的FileOutputStream 参考文档

        在Java中,流是从源读取并写入到目的地的数据序列。     输入流用于从源读取数据,输出流用于将数据写入目标。

    class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }

        例如,在我们的第一个Hello World示例中,我们曾使用过System.out打印字符串。在此,System.out是一种输出流。     同样,输入流用于输入。

    1. 流的种类

        根据流包含的数据,可以将流分为字节流(Byte Stream)和字符流(Character Stream)。

    1.1 字节流

        字节流用于读写单个字节(8位)的数据。所有字节流类都是从名为InputStream和OutputStream的基本抽象类派生的。

    1.2 字符流

        字符流用于读取和写入单个数据字符。所有字符流类都是从基本抽象类Reader和Writer派生的。

    2. Java InputStream类

        在本节中,我们将通过一个示例来学习Java InputStream类及其方法。     InputStream类是java.io包的一个抽象超类,它代表字节的输入流.由于InputStream是抽象类,因此它不能被使用。但是,其子类可用于读取数据。

    2.1 InputStream的子类

        为了使用InputStream的功能,我们可以使用其子类,如:

    FileInputStreamByteArrayInputStreamObjectInputStream

    2.2 创建一个InputStream

        为了创建InputStream,我们必须首先导入java.io.InputStream包。导入包后,就可以创建输入流。

    // Creates an InputStream InputStream object1 = new FileInputStream();

        在这里,我们使用FileInputStream创建了一个输入流。这是因为InputStream是一个抽象类,我们无法创建InputStream的对象。注意:我们还可以从InputStream的其他子类创建输入流。

    2.3 InputStream的方法

        InputStream类提供不同方法,这些方法由其子类实现。以下是一些常用的方法:

    read() - 从输入流中读取一个字节的数据read(byte[] array) - 从流中读取字节并存储在指定的数组中available() - 返回输入流中可用的字节数mark() - 标记输入流中数据已被读取到的位置reset() - 返回流中设置mark标记的点markSupported() - 检查流中是否支持mark()和reset()方法skips() - 跳过并丢弃输入流中指定的字节数close() - 关闭输入流
    2.4 示例:使用InputStream的FileInputStream

        下面是如何使用FileInputStream类实现InputStream。     假设我们有一个名为input.txt的文件,包含以下内容:

    This is a line of text inside the file.

        让我们尝试使用FileInputStream(InputStream的子类)读取此文件。

    import java.io.FileInputStream; import java.io.InputStream; public class Main { public static void main(String args[]) { byte[] array = new byte[100]; try { InputStream input = new FileInputStream("input.txt"); System.out.println("Available bytes in the file: " + input.available()); // Read byte from the input stream input.read(array); // Convert byte array into string System.out.println("Data read from the file: "); String data = new String(array); System.out.println(data); // Close the input stream input.close(); } catch (Exception e) { e.getStackTrace(); } } }

        输出为:

    Available bytes in the file: 35 Data read from the file: This is a line of text inside the file

        在上面的示例中,我们使用FileInputStream类创建了输入流。输入流与input.txt文件链接。

    InputStream input = new FileInputStream("input.txt");

        为了从input.txt文件中读取数据,我们实现了这两种方法:

    input.read(array); // to read data from the input stream input.close(); // to close the input stream

    3. Java OutputStream类

        在本节中,我们将通过一个示例学习Java OutputStream及其方法。     java.io包的OutputStream类是一个抽象超类,它表示字节的输出流。由于OutputStream是抽象类,因此它本身没有用。但是,其子类可用于写入数据。

    3.1 OutputStream的子类

        为了使用OutputStream的功能,我们可以使用其子类,包括:

    FileOutputStreamByteArrayOutputStreamObjectOutputStream

    3.2 创建一个OutputStream

        为了创建OutputStream,我们必须先导入java.io.OutputStream包。导入包后,就可以创建输出流。

    // Creates an OutputStream OutputStream object = new FileOutputStream();

        在这里,我们使用FileOutputStream创建了一个输出流对象。因为OutputStream是一个抽象类,所以我们不能创建OutputStream的对象。     注意:我们还可以从OutputStream类的其他子类创建输出流。

    3.3 OutputStream的方法

        OutputStream类提供多种不同方法,方法由OutputStream子类实现。以下是一些方法:

    write() - 将指定的字节写入输出流write(byte[] array) - 将指定数组中的字节写入输出流flush() - 强制将输出流中存在的所有数据写入目标close() - 关闭输出流
    3.4 示例:使用OutputStream的FileOutputStream

        下面是如何使用FileOutputStream类实现OutputStream。

    import java.io.FileOutputStream; import java.io.OutputStream; public class Main { public static void main(String args[]) { String data = "This is a line of text inside the file."; try { OutputStream out = new FileOutputStream("output.txt"); // Converts the string into bytes byte[] dataBytes = data.getBytes(); // Writes data to the output stream out.write(dataBytes); System.out.println("Data is written to the file."); // Closes the output stream out.close(); } catch (Exception e) { e.getStackTrace(); } } }

        在上面的示例中,我们使用FileOutputStream类创建了一个输出流。现在,输出流已与文件output.txt链接。

    OutputStream out = new FileOutputStream("output.txt");

        要将数据写入output.txt文件,我们实现了这些方法:

    output.write(); // To write data to the file output.close(); // To close the output stream

        当我们运行程序时,output.txt文件将填充以下内容。

    This is a line of text inside the file.

        很久没更新原创了,非常抱歉。最近在学习Java,感觉还没到值得输出原创的地步,所以这段时间以翻译文章为主。

    参考文档

    [1]Parewa Labs Pvt.Java InputStream Class[EB/OL].https://www.programiz.com/java-programming/inputstream,2020-01-01. [2]Parewa Labs Pvt.Java OutputStream Class[EB/OL].https://www.programiz.com/java-programming/outputstream,2020-01-01.

    Processed: 0.012, SQL: 8