java io之输出字节流总结

一、OutputStream

                所有输出字节流的父抽象类,包括write(),flush(),close()等方法

二、FileOutputStream

                正常的文件输出字节流,每调用一次write(),可以写入文件一个字节或几个字节,直接对磁盘进行操作。

 
 
        String txt = "我是中国人";
        byte[] b2 = txt.getBytes();

        try {
            FileInputStream is = new FileInputStream(file);
                FileOutputStream os = new FileOutputStream(file2);
                os.write(b2);
                os.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
这个字节流实例可以将中文写入文件中,因为 getBytes()方法内部调用 StringCoding.encode()方法使用默认编码将字符编码为字节,然后os.write()方法使用默认本地方法writeBytes()使用默认编码将字节转换为字符写入文件。所以字节流也可以写中文字符

三、ByteArrayOutputStream

                先通过构造函数来确定一个字节缓冲区大小,如果不设定,则有一个默认值为32。然后使用write()方法将缓冲区内容写入文件中。缓冲区会随着数据的不断写入而自动增长(grow()方法)

四、PipedOutputStream

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

                使用管道通信时,大致的流程是:我们在线程A中向PipedOutputStream中写入数据,这些数据会通过connect()方法自动的发送到与PipedOutputStream对应的PipedInputStream中,进而存储在PipedInputStream的缓冲中;此时,线程B通过读取PipedInputStream中的数据。就可以实现,线程A和线程B的通信。

五、ObjectOutputStream

                ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对象的持久存储。如果流是网络套接字流,则可以在另一台主机上或另一个进程中重构对象。

扫描二维码关注公众号,回复: 994876 查看本文章

                 必须使用Serializable接口进行序列化操作,writeObject 方法负责写入特定类的对象状态,以便相应的 readObject 方法可以恢复它。该方法通过DataOutputStream来实现。

六、FilterOutputStream

         继承了OutputStream类,可以被实例化,因为源码中FilterOutputStream的构造函数是public类型,而FilterInputStream的构造函数是protected类型的,所以无法被实例化(为什么这么设计还在找原因)。不过FilterOutputStream封装的write方法比较简单,一般不用,用的时候都用它的几个子类。主要包括BufferedOutputStream, DataOutputStream和PrintStream


继承FilterOutputStream的类

七、BufferedInputStream

        BufferedOutputStream每次磁盘io时读取的byte[]数组很多,默认大小是8192,也就是有一个8M的缓冲区,每次写数据时先将数据写入缓冲区字节数组中。需要注意的是,每次写数据完毕都必须使用flush()方法或者close()方法将缓冲区内的数据强制写入文件中,否则不会写入到文件

八、DataOutputStream

                DataOutputStream可以将各种JAVA基本类型和String类型写入文件中,内部使用的字节流,只是封装的更好了一点。

十、PrintStream

                    PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。另外,为了自动刷新,可以创建一个 PrintStream;这意味着可在写入byte 数组之后自动调用 flush 方法,可调用其中一个 println 方法,或写入一个换行符或字节 ('\n')。PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。java中最常用的System.out.println就是使用System类的静态PrintStream对象out的println方法。

猜你喜欢

转载自blog.csdn.net/a274537260/article/details/80367589