• Java IO流之字符缓冲流


     字符流:

    1、加入字符缓存流,增强读取功能(readLine)

    2、更高效的读取数据

    BufferedReader

    从字符输入流读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。   

    FileReader:内部使用InputStreamReader,解码过程,byte->char,默认缓存大小为8k

    BufferReader:默认缓存大小为8k,但可以手动指定缓存大小,把数据读取到缓存中,减少每次转换过程,效率更高

    //字符输入缓冲流
    	private static void charReader() {
    		//目标文件
    		File file = new File("F:\javatest\lemon1.txt");
    		try {
    			//字符流
    			Reader reader = new FileReader(file);
    			//为字符流提供缓冲,已达到高效读取的目的
    			BufferedReader bufr = new BufferedReader(reader);
    			
    			char[] chars = new char[1024];
    			int len = -1;
    			while((len = bufr.read(chars)) != -1) {
    				System.out.println(new String(chars,0,len));
    			}
                bufr.close();
    				
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    

      

    BufferedWriter

    将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入

    FileWriter:内部使用InputStreamWriter,解码过程,byte->char,默认缓存大小为8k

    BufferWriter:默认缓存大小为8k,但可以手动指定缓存大小,把数据读取到缓存中,减少每次转换过程,效率更高

    //字符输出缓存流
    	private static void charWriter() {
    		//目标文件
    		File file = new File("F:\javatest\lemon1.txt");
    		try {
    			//字符流
    			Writer writer = new FileWriter(file,true);//追加
    			//为字符流提供缓冲,已达到高效读取的目的
    			BufferedWriter bufr = new BufferedWriter(writer);
    			bufr.write("这里是字符缓冲流
    ");
    			bufr.flush();
    			bufr.close();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    

      

    总结:

    package com.lemon;
     
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.Reader;
    import java.io.Writer;
    /**
     * 缓存的目的:
     * 解决在写入文件操作时,频繁的操作文件所带来的性能降低问题
     * BufferedOutputStream内部默认的缓存大小是8kb,每次写入时存储到缓存中的byte数组中,当数组存满时,会把数组中的数据写入文件
     * 并且缓存下标归零 
     * 
     * 字符流:
     * 1、加入字符缓存流,增强读取功能(readLine)
     * 2、更高效的读取数据
     * FileReader:内部使用InputStreamReader,解码过程,byte->char,默认缓存大小为8k
     * BufferReader:默认缓存大小为8k,但可以手动指定缓存大小,把数据读取到缓存中,减少每次转换过程,效率更高
     * BufferedWriter:同上
     * @author lemonSun
     *
     * 2019年5月4日下午8:12:53
     */
    public class BufferStreamDemo {
     
    	public static void main(String[] args) {
    	//	byteWriter();
    	//	byteReader();
    //		byteReader1();
    //		charReader();
    		charWriter();
    	}
    	
    	//字符输出缓存流
    	private static void charWriter() {
    		//目标文件
    		File file = new File("F:\javatest\lemon1.txt");
    		try {
    			//字符流
    			Writer writer = new FileWriter(file,true);//追加
    			//为字符流提供缓冲,已达到高效读取的目的
    			BufferedWriter bufr = new BufferedWriter(writer);
    			bufr.write("这里是字符缓冲流
    ");
    			bufr.flush();
    			bufr.close();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	
    	//字符输入缓存流
    	private static void charReader() {
    		//目标文件
    		File file = new File("F:\javatest\lemon1.txt");
    		try {
    			//字符流
    			Reader reader = new FileReader(file);
    			//为字符流提供缓冲,已达到高效读取的目的
    			BufferedReader bufr = new BufferedReader(reader);
    			
    			char[] chars = new char[1024];
    			int len = -1;
    			while((len = bufr.read(chars)) != -1) {
    				System.out.println(new String(chars,0,len));
    			}
    			bufr.close();
    				
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	
    	//缓存流输入 不用关闭 try自动关闭 必须实现Closeable接口
    	private static void byteReader1(){
    		//目标文件
    		File file = new File("F:\javatest\lemon1.txt");
    		
    		//buf作用域在try大括号里面多条语句try(;),;隔开 
    		try(BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file))) {	
    			byte[] bytes = new byte[1024];
    			int len = -1;
    			while((len = buf.read(bytes)) != -1) {
    				System.out.println(new String(bytes,0,len));
    			}
    		
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    	}
    	
    	//缓存流输入
    	private static void byteReader(){
    		//目标文件
    		File file = new File("F:\javatest\lemon1.txt");
    		
    		try {
    			//字节输出流
    			InputStream in = new FileInputStream(file);
    			//字节缓冲流
    			BufferedInputStream buf = new BufferedInputStream(in);
    			byte[] bytes = new byte[1024];
    			int len = -1;
    			while((len = buf.read(bytes)) != -1) {
    				System.out.println(new String(bytes,0,len));
    			}
    			buf.close();//自动关闭 in.close
    		
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    	}
    	
    	
    	//缓存流输出
    	private static void byteWriter(){
    		//目标文件
    		File file = new File("F:\javatest\lemon1.txt");
    		
    		try {
    			//字节输出流
    			OutputStream out = new FileOutputStream(file,true);
    			//缓冲流
    			BufferedOutputStream buf = new BufferedOutputStream(out);
    			//内容
    			String info = "这里是缓冲流
    ";
    			//写入
    			buf.write(info.getBytes());
    			buf.close(); //jdk1.7以后自动关闭 out
    		//	out.close();
    				
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    	}
     
    }
    

      


    原文:https://blog.csdn.net/LemonSnm/article/details/89819829

  • 相关阅读:
    uvm_misc——杂货铺(miscellaneous)
    23种设计模式及其应用场景
    Hadoop TextInputFormat源码分析
    java字符串替换函数高效实现
    hadoop HA 之 QJM
    中文分词词性对照表
    计算两个字符串编辑距离
    java 图片处理
    zookeeper数据迁移
    正则表达式
  • 原文地址:https://www.cnblogs.com/qbdj/p/10877042.html
Copyright © 2020-2023  润新知