欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA IO流学习案例

程序员文章站 2022-04-23 16:55:20
...

一、IO流的三种分类方式

    1.按流的方向分为:输入流和输出流

    2.按流的数据单位不同分为:字节流和字符流

    3.按流的功能不同分为:节点流和处理流

    二、IO流的四大抽象类:

    字符流:Reader Writer

    字节流:InputStream(读数据)

    OutputStream(写数据)

    三、InputStream的基本方法

    int read() throws IOException 读取一个字节以整数形式返回,如果返回-1已到输入流的末尾

    void close() throws IOException 关闭流释放内存资源

    long skip(long n) throws IOException 跳过n个字节不读

    四、OutputStream的基本方法

    void write(int b) throws IOException 向输出流写入一个字节数据

    void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地

    五、Writer的基本方法

    void write(int c) throws IOException 向输出流写入一个字符数据

    void write(String str) throws IOException将一个字符串中的字符写入到输出流

    void write(String str,int offset,int length)

    将一个字符串从offset开始的length个字符写入到输出流

    void flush() throws IOException

    将输出流中缓冲的数据全部写出到目的地

    六、Reader的基本方法

    int read() throws IOException 读取一个字符以整数形式返回,如果返回-1已到输入流的末尾

 

    常用的IO流

    字节输入流     InputStream inputStream = new FileInputStream(resourceFile);

    字节输出流     OutputStream outputStream = new FileOutputStream(targetFile)

 

    字符输入流      InputStreamReader inputStream =

                                                        new InputStreamReader(new FileInputStream(resourceFile))

    字符输出流      OutputStreamWriter outputStream =

                                                        new OutputStreamWriter(new FileOutputStream(targetFile))

  

    这次加上字节缓冲流

    数据输入流      DataInputStream inputStream =new DataInputStream(

                                                       new BufferedInputStream(new FileInputStream(resourceFile)));

    数据输出流      DataOutputStreamoutputStream =new DataOutputStream(

                                                       new BufferedOutputStream(new FileOutputStream(targetFile)))

    对象输入流      ObjectInputStream inputStream = new ObjectInputStream(

                                                       new BufferedInputStream(new FileInputStream(resourceFile)))

 

    对象输出流      ObjectOutputStream outputStream = new ObjectOutputStream(

                                                       new BufferedIOutputStream(new FileOutputStream(targetFile)))

 

 

            //此构造函数等于已可以往一个字节数组里输入内容 (就是将字节流放入内存中)

           ByteArrayOutputStream bos = new ByteArrayOutputStream ()

                                                 类似于 byte[] buf = new byte[1024] 以便于写入内容

           //此构造函数等于将刚才放入内存中的数据读取出来

           ByteArrayInputStream  bis=new ByteArrayInputStream(bos.toByteArray())

                                                 类似于 上面的buf在写入字节后,放入该字节流中 以便于读取内容

        常用的场景是将以上对象放入 数据流中与对象流中 例如:

        

         数据输入流      DataInputStream inputStream =new DataInputStream(bis);

         数据输出流      DataOutputStreamoutputStream =new DataOutputStream(bos )

         对象输入流      ObjectInputStream inputStream = new ObjectInputStream(bis)

         对象输出流      ObjectOutputStream outputStream = new ObjectOutputStream(bos )

       常用领域

         在数据的传输中应用的比较多 例如socket服务器与客户端的数据交互

 

      还有就是 inputStream 是所有输入流的父接口

                     outputStream是所有输出流的父接口

 

        至于File对象就没什么可以说的了 该对象可以是一个文件夹 也可以是一个具体的文件 通过isFile()方法判断

        可以获取文件的名字,路径 等等信息