• DataOutputStream and DataInputStream


            DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("a.txt")));
            dos.writeInt(5);
            dos.writeBoolean(true);
            dos.flush();
            dos.close();
            DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("a.txt")));
            System.out.println(dis.readInt());
            System.out.println(dis.readBoolean());
            dis.close();
            
            //学习怎样关闭流
            BufferedReader br = null;
            InputStreamReader in = null;
            try {
                in = new InputStreamReader(FileStreamTest.class.getResourceAsStream("a.txt"), "UTF-8");
                br = new BufferedReader(in);
                //按行进行读 br.readLine()
            } catch (Exception e) {
                e.printStackTrace();
            } finally{
                    if (br != null) {
                        try {
                            br.close();       //为什么in.close()没写入进去,防止br.close()抛出异常,in.close()得不到关闭。
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        
                    }
                    if (in !=null){
                        try {
                            in.close();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
            }
            
        }


    Java全部的流类位于java.io包中,都分别继承字下面四种抽象流类型。

      字节流 字符流
    输入流 InputStream Reader
    输出流 OutputStream Writer

    1.继承自InputStream/OutputStream的流都是用于向程序中输入/输出数据。且数据的单位都是字节(byte=8bit),如图。深色的为节点流,浅色的为处理流。

     

    2.继承自Reader/Writer的流都是用于向程序中输入/输出数据,且数据的单位都是字符(2byte=16bit),如图。深色的为节点流。浅色的为处理流。

    节点流类型常见的有:

    对文件操作的字符流有FileReader/FileWriter,字节流有FileInputStream/FileOutputStream。

    处理流类型常见的有:

    缓冲流:缓冲流要“套接”在对应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写效率,同事添加了一些新的方法。

      字节缓冲流有BufferedInputStream/BufferedOutputStream,字符缓冲流有BufferedReader/BufferedWriter,字符缓冲流分别提供了读取和写入一行的方法ReadLine和NewLine方法。

      对于输出地缓冲流,写出的数据,会先写入到内存中。再使用flush方法将内存中的数据刷到硬盘。

    所以。在使用字符缓冲流的时候,一定要先flush,然后再close,避免数据丢失。

    转换流:用于字节数据到字符数据之间的转换。

      仅有字符流InputStreamReader/OutputStreamWriter。当中,InputStreamReader须要与InputStream“套接”。OutputStreamWriter须要与OutputStream“套接”。

    数据流:提供了读写Java中的基本数据类型的功能。

      DataInputStream和DataOutputStream分别继承自InputStream和OutputStream,须要“套接”在InputStream和OutputStream类型的节点流之上。

    对象流:用于直接将对象写入写出。

      流类有ObjectInputStream和ObjectOutputStream,要求写出的对象必须实现Serializable接口,来声明其是能够序列化的。否则,不能用对象流读写。

      另一个keyword比較重要,transient。修饰实现了Serializable接口的类内的属性,在以对象流的方式输出的时候,该字段会被忽略。




  • 相关阅读:
    Oracle 跨库查询表数据(不同的数据库间建立连接)
    Oracle 跨库查询表数据(不同的数据库间建立连接)
    Win10“启动”文件夹在哪里?如何打开Win10启动文件夹?
    常用[js,css,jquery,html]
    备忘
    常用网站
    常用SQL[ORACLE]
    基于 Promise 的 HTTP 请求客户端 axios
    CSS中字体响应式的设置
    HTML5 History API让ajax能回退到上一页
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6785739.html
Copyright © 2020-2023  润新知