当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java InputStream和OutputStream的区别用法及代码示例


流可以定义为数据序列或连续的数据流。流是处理输入/输出的清晰方法。流有两种类型,如下所示:

Stream in Java

在上图中,我们的InputStream和OutputStream将驻留在字节流中。那么我们来讨论一下字节流。

1. 字节流:字节流提供了一种处理字节输入和输出的便捷方式。字节流进一步分为各种类,但顶层层次类如下所示:

ByteStream in Java

1.1 InputStream:InputStream是Byte Stream的抽象类,说明流输入,用于读取,可以是文件、图像、音频、视频、网页等,都可以。因此,InputStream 一次从源读取一项数据。

Input Stream in Java

1.2 OutputStream:OutputStream是Byte Stream的一个抽象类,说明流输出,用于将数据写入文件、图像、音频等。因此,OutputStream一次写入一个数据到目的地。

OutputStream in Java

Difference between InputStream and OutputStream

InputStream 输出流
1.它是一个说明Stream Input的抽象类。 1.它是一个抽象类,说明Stream Output。
2. InputStream 一次从源读取一次数据。 2. OutputStream 一次将数据写入目的地一次。

3. InputStream 由执行以下操作的方法组成:

  • 从输入流中读取下一个字节的数据并在文件末尾返回-1:公共抽象 int read()抛出 IOException
  • 关闭当前输入流:公共 int available()抛出 IOException
  • 返回可以从当前输入流读取的字节数的估计值:公共无效close()抛出IOException

3. 输出流由执行以下操作的方法组成:

  • 将一个字节写入当前输出流:public void write(int) 抛出 IOException
  • 将字节数组写入当前输出流:public void write(byte[])抛出IOException
  • 刷新当前的 OutputStream:公共无效flush()抛出IOException
  • 关闭当前输出流:公共无效close()抛出IOException

4.InputStream的类型有:

  • FileInputStream
  • ByteArrayInputStream
  • FilterInputStream
  • ObjectInputStream

在这些类型中,最重要且最常用的类型是 FileInputStream。

4.OutputStream的类型有:

  • FileOutputStream
  • ByteArrayOutputStream
  • FilterOutputStream
  • ObjectOutputStream

在这些类型中,最重要且最常用的类型是FileOutput Stream。

输入流程序:

在此程序中,文件gfg.txt由“GEEKSFORGEEKS”组成。

注意:该文件保存在保存 java 程序的同一位置,然后执行以下程序。如果文件保存在某个特定位置,则写入详细信息,例如:

FileInputStream fileIn=new FileInputStream("C:\\gfg.txt"); 

Java


// Imported to use methods 
import java.io.FileInputStream; 
  
// Main Class 
public class InputStreamExample { 
    public static void main(String args[]) 
    { 
        // Reading from Source file 
        try { 
            FileInputStream fileIn 
                = new FileInputStream("gfg.txt"); 
            int i = 0; 
            while ((i = fileIn.read()) != -1) { 
                System.out.print((char)i); 
            } 
            fileIn.close(); 
        } 
        catch (Exception e) { 
            System.out.println(e); 
        } 
    } 
}

输出:

GEEKSFORGEEKS 

OutputStream 的程序

这里gfg.txt 文件是空的,并且保存在保存Java 程序的同一位置。该程序将GeeksforGeeks写入空文件中,如果文本成功写入文件,则显示消息“文件已成功更新”。

Java


// Imported to use inbuilt methods 
import java.io.FileOutputStream; 
  
// Main class 
public class OutputStreamExample { 
    public static void main(String args[]) 
    { 
        // Writing in file gfg.txt 
        try { 
            FileOutputStream fileOut 
                = new FileOutputStream("gfg.txt"); 
            String s = "GeeksforGeeks"; 
  
            // converting string into byte array 
            byte b[] = s.getBytes(); 
            fileOut.write(b); 
            fileOut.close(); 
            System.out.println( 
                "file is successfully updated!!"); 
        } 
        catch (Exception e) { 
            System.out.println(e); 
        } 
    } 
}

输出:

file is successfully updated!!

当我们再次使用第一个程序读取文件时,输出如下所示:

GeeksforGeeks


相关用法


注:本文由纯净天空筛选整理自jagroopofficial大神的英文原创作品 Difference Between InputStream and OutputStream in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。