Java OutputStream输出流详解(非常全面)

Java OutputStream输出流详解(非常全面)-mikechen

Java OutputStream简介

OutputStream是java中的字节输出流,OutputStream用来将文件,或者字符串输出到新的文件中。

Java OutputStream输出流详解(非常全面)-mikechen

在Java中通过程序使用数据流,将数据写入到目的地的称为输出流。

 

Java OutputStream类图

OutputStream是所有字节输出流的顶层父类,是一个抽象类,如果要用需要使用子类。

Java OutputStream输出流详解(非常全面)-mikechen

1)ByteArrayOutputStream

ByteArrayOutputStream是对byte类型数据进行写入的类,相当于一个中间缓冲层,将类写入到文件等其他outputStream,它是对字节进行操作,属于内存操作流是字节数组输出流。

 

2)PipedOutputStream

PipedOutputStream是管道输出流,它的作用是让多线程可以通过管道进行线程间的通讯,在使用管道通信时,必须将PipedOutputStream和PipedInputStream配套使用。

 

3)FileOutputStream

FileOutputStream:是文件输出流,通常用于向文件进行写入操作,其继承OutputStream类。

 

4)FilterOutputStream

FilterOutputStream是过滤输出流,FilterOutputStream 的作用是用来“封装其它的输出流,并为它们提供额外的功能”。

FilterOutputStream它主要包括BufferedOutputStream, DataOutputStream和PrintStream。

 

5)ObjectOutputStream

ObjectOutputStream是对象输出流,它和ObjectInputStream一起对基本数据或者对象的持久存储。

 

Java OutputStream方法

OutputStream这个抽象类定义了常见的方法,如下所示:

>void close() 
关闭此输出流并释放与此流有关的所有系统资源。 

>void flush() 
刷新此输出流并强制写出所有缓冲的输出字节。 

>void write(byte[] b) 
将 b.length 个字节从指定的 byte 数组写入此输出流。 
         
>void write(byte[] b, int off, int len) 
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。 

> abstract  void write(int b) 
将指定的字节写入此输出流。

 

Java OutputStream示例

public class OutputStreamDemo01{
     public static void main(String args[]) throws Exception{    // 异常抛出,不处理
       // 第1步、使用File类找到一个文件
        File f= new File("d:" + File.separator + "test.txt") ;    // 声明File对象
         // 第2步、通过子类实例化父类对象
        OutputStream out = null ;    // 准备好一个输出的对象
         out = new FileOutputStream(f)  ;    // 通过对象多态性,进行实例化
        // 第3步、进行写操作
         String str = "Hello World!!!" ;        // 准备一个字符串
         byte b[] = str.getBytes() ;            // 只能输出byte数组,所以将字符串变为byte数组
        out.write(b) ;                        // 将内容输出,保存文件
         // 第4步、关闭输出流
        out.close() ;                        // 关闭输出流
        //文件不存在会自动创建
    }
 };

 

 

 

 

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法