zoukankan      html  css  js  c++  java
  • Java开发知识之JavaIO操作缓存操作

    带缓存的输入/输出流

    一丶简介

    缓存是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做包装实例

    	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类实例

    	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.文件读取流程

    提供的方法

    代码例子

    	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()用于读取,并且返回字符串.
    例子:

    	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();
    		
    	}
    

    总结

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

  • 相关阅读:
    PowerGhost
    watchdogs感染性挖矿病毒
    XorDDoS木马
    Gates(盖茨)木马
    seasame病毒
    zabbix监控之邮件报警通知
    ubuntu18.04 heirloom-mailx 通过外部SMTP服务器发送邮件
    linux小常识
    zabbix基本概念
    Zabbix图表中文乱码
  • 原文地址:https://www.cnblogs.com/iBinary/p/9836279.html
Copyright © 2011-2022 走看看