前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java开发知识之JavaIO操作缓存操作

Java开发知识之JavaIO操作缓存操作

作者头像
IBinary
发布2019-05-25 16:15:12
4030
发布2019-05-25 16:15:12
举报
文章被收录于专栏:逆向技术

目录

  • 带缓存的输入/输出流
    • 一丶简介
    • 二丶BufferedInputStream 与 BufferedOutputString类.
      • 2.BufferOutputStream类.
    • 三丶BufferedReader类与BufferedWriter类
      • 1.BufferedReader缓存类的使用介绍.
    • 四丶数据输入/输出流
      • 1.构造以及常用方法

带缓存的输入/输出流

一丶简介

缓存是I/O的一种性能优化.缓存流为 I/O 流增加了内存缓存区.有了缓存区,那么在流上执行 skip().mark() reset()方法,都成为可能. 总来的来说其实就是通过缓存读写.执行效率更高,更快.

二丶BufferedInputStream 与 BufferedOutputString类.

  • BufferedInputString(InputStream in)可以对所有InputString类进行带缓存的包装,达到性能优化.
1.两种构造方法

第一种: 传入一个InPutStream类的实现类对他做包装,带有32个字节的缓存. 第二种: 指定一个大小. 比如读取文件,BufferdInputStream对象位于InputStream类对象之前.

2.BufferOutputStream类.

1.构造方法

使用BufferdOutputStream输出信合和用OutputStream输出信息一样.只不过BufferedOutputStream有一个flush方法,用来将缓存区的数据强制输出玩.

只不过翻过来了,第一种就是构造32个字节缓存.第二个指定大小.创建.

-针对BufferedInputStream做包装实例

代码语言:javascript
复制
    private static void File() throws Exception {
        // TODO 自动生成的方法存根
        File f = new File("1.txt");//创建一个文件
        InputStream in = new FileInputStream(f);
        BufferedInputStream inn = new BufferedInputStream(in);//对in做包装
        byte[] a = new byte[10];
        inn.read(a);//利用缓冲区读取
        
        System.out.println(Arrays.toString(a));//输出字节数组内容.
        System.out.println(new String(a));     //字节数组,转为字符串显示.

        
    }

输出结果.

BufferedOutputStream类实例

代码语言:javascript
复制
    private static void File() throws Exception {
        // TODO 自动生成的方法存根
        File f = new File("1.txt");//创建一个文件
        InputStream in = new FileInputStream(f);
        OutputStream out = new FileOutputStream(f);
        BufferedOutputStream outBuf = new BufferedOutputStream(out);
        outBuf.write(new String("HelloWroldssss sdfsdfsdf").getBytes());
        outBuf.flush();
        outBuf.close();
    }

文件中的结果

三丶BufferedReader类与BufferedWriter类

我们曾经说过,Java是Unicode字节集.所以字节读取可能出现错误. 然后针对这种错误,出现了Reader类以及Writer类.而缓冲流也针对这两个类实现了.就是上面所说的类.也就是内部缓存类. 用法跟上面的BufferedInputStream类一样.

1.BufferedReader缓存类的使用介绍.

-1.文件读取流程

提供的方法

代码例子

代码语言:javascript
复制
    private static void File() throws Exception {
        // TODO 自动生成的方法存根
        File f = new File("1.txt");//创建一个文件
        Writer wfile = new FileWriter(f); //创建写文件UNICODE形式.
        BufferedWriter wBufferFile = new BufferedWriter(wfile);//对写文件创建缓冲区.
        String str[] = {"今天","你","学习了吗"};
        //写入文件
        for(int i = 0; i < str.length;i++) {
            wBufferFile.write(str[i]);//循环写入
            wBufferFile.flush();
        }
        wBufferFile.close();
        
    }

实现结果

四丶数据输入/输出流

数据输入输出流(DataInputStream与DataOutputStream)允许应用程序与机器无关的方式,从底层输入流中读取基本的java数据类型,也就是说,当读取一个数据的时候,不用关心这个数值应该是那种字节了.

1.构造以及常用方法

java是Unicode编码.上字节.writebytes知识将字符中的每一个字符的低字节内容写到目标设备 writeChars将字符串中的两个字节内容写到目标设备 writeUtf则是按照UTF方式写入到目标设备.

输入流,提供了ReadUTF()用于读取,并且返回字符串. 例子:

代码语言:javascript
复制
    private static void File() throws Exception {
        // TODO 自动生成的方法存根
        File f = new File("1.txt");//创建一个文件
        OutputStream wfile =new FileOutputStream(f); //创建写文件UNICODE形式.
        DataOutputStream out = new DataOutputStream(wfile);
        String str[] = {"今天","你","学习了吗"};
        //写入文件
        out.writeChars("今");
        out.close();
        
    }
总结

其实都是对输入输出流做的缓存封装,在流上封装了新的方法.读取数据.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-10-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 带缓存的输入/输出流
    • 一丶简介
      • 二丶BufferedInputStream 与 BufferedOutputString类.
        • 2.BufferOutputStream类.
      • 三丶BufferedReader类与BufferedWriter类
        • 1.BufferedReader缓存类的使用介绍.
      • 四丶数据输入/输出流
        • 1.构造以及常用方法
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档