• 缓冲流


    缓冲流:提高IO流的读写速度  

      根据流的分类分类字节缓冲流与字符缓冲流

    字节缓冲流

      写入数据到流中,字节缓冲输出流 BufferedOutputStream 

      读取流中的数据,字节缓冲输入流 BufferedInputStream

      利用字节缓冲流复制 文件 比字节流复制(大文件) 速度快

    代码

    package com.oracle.demo01;
    
    import java.io.BufferedOutputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class Demo3 {
    
    	public static void main(String[] args) throws IOException {
    		//明确目的地
    		FileOutputStream fos=new FileOutputStream("D:\demo1018\buffer.txt",true);
    		//添加缓冲流
    		BufferedOutputStream bos=new BufferedOutputStream(fos);
    		/*//一个字节一个字节写
    		bos.write(100);*/
    		byte bytes[]={66,65,67,68};
    		bos.write(bytes);
    		//释放资源
    		bos.close();
    
    	}
    
    }
    
    package com.oracle.demo01;
    
    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class Demo4 {
    
    	public static void main(String[] args) throws IOException {
    		//明确数据源
    		FileInputStream fis=new FileInputStream("D:\demo1018\buffer.txt");
    		//添加缓冲流
    		BufferedInputStream bis=new BufferedInputStream(fis);
    		//一个字节一个读
    		int len=0;
    		while ((len=bis.read())!=-1) {
    			System.out.println((char)len);
    		}
    		//释放资源
    		bis.close();
    	}
    
    }
    
    package com.oracle.demo01;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class Copy {
    
    	public static void main(String[] args) throws IOException {
    		//明确数据源
    		FileInputStream fis=new FileInputStream("D:\demo1018\buffer.txt");
    		//明确目的地
    		FileOutputStream fos=new FileOutputStream("D:\demo1018\a\buffer2.txt",true);
    		//添加缓冲流
    		BufferedInputStream bis=new BufferedInputStream(fis);
    		BufferedOutputStream bos=new BufferedOutputStream(fos);
    		/*单个复制
    		int len=0;
    		while ((len=bis.read())!=-1) {
    			bos.write(len);
    		}*/
    		//字节数组复制
    		byte bytes[]=new byte[1024];
    		int len=0;
    		while ((len=bis.read(bytes))!=-1) {
    			bos.write(bytes,0,len);
    		}
    		//释放资源
    		bis.close();
    		bos.close();
    		
    	}
    
    }
    

    字符缓冲流 

      完成文本数据的高效的写入与读取的操作

    字符缓冲输入流 BufferedReader   特殊方法  void newLine() 根据当前的系统,写入一个换行符

      

    package com.oracle.demo02;
    
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class Demo1 {
    
    	public static void main(String[] args) throws IOException {
    		//名确目的地
    		FileWriter fw=new FileWriter("D:\demo1018\buffer2.txt");
    		//添加缓冲流
    		BufferedWriter bw=new BufferedWriter(fw);
    		//写一个字符
    		bw.write(100);
    		bw.flush();
    		//写一个数组
    		char ch[]={'你','好','啊'};
    		bw.write(ch);
    		bw.flush();
    		//写入换行
    		bw.newLine();
    		bw.flush();
    		//写一个字符串
    		bw.write("我很好");
    		//释放资源
    		bw.close();
    	}
    
    }
    

      

    字符缓冲输出流 BufferedWriter  特殊方法 public String readLine() 读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

    package com.oracle.demo02;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class Demo02 {
    
    	public static void main(String[] args) throws IOException {
    		//名确数据源
    		FileReader fr=new  FileReader("D:\demo1018\buffer2.txt");
    		//添加缓冲流
    		BufferedReader br=new BufferedReader(fr);
    		//开始一行一行的读
    		String line=null;
    		while ((line=br.readLine())!=null) {
    			System.out.println(line);
    		}
    		//释放资源
    		br.close();
    	}
    
    }
    

    使用字符缓冲流完成文本文件的复制

        1,指定数据源, 是数据源中读数据,采用输入流    2,指定目的地,是把数据写入目的地,采用输出流     3,读数据   4,写数据     5,关闭流

    package com.oracle.demo02;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    
    public class Copyzifuhuanchong {
    
    	public static void main(String[] args) throws IOException {
    		//明确数据源
    		FileReader fr=new FileReader("D:\demo1018\buffer2.txt");
    		//明确目的地
    		FileWriter fw=new FileWriter("D:\demo1018\b\buffer2.txt");
    		//添加缓冲流
    		BufferedReader br=new BufferedReader(fr);
    		BufferedWriter bw=new BufferedWriter(fw);
    		//复制
    		String line=null;
    		while((line=br.readLine())!=null){
    			bw.write(line);
    			bw.newLine();
    			bw.flush();
    		}
    		//释放资源
    		br.close();
    		bw.close();
    	}
    
    }
    

      

  • 相关阅读:
    [JSOI2007][BZOJ1030] 文本生成器|AC自动机|动态规划
    [NOI2014][BZOJ3670] 动物园|KMP
    [HAOI2010][BZOJ2427] 软件安装|tarjan|树型dp
    [JSOI2008][BZOJ1017] 魔兽地图DotR|树型dp
    [JLOI2014][BZOJ3631] 松鼠的新家|树上倍增LCA|差分
    [SDOI2010][BZOJ1975] 魔法猪学院|A*|K短路
    [BZOJ1251] 序列终结者|Splay
    hdu 2141 Can you find it?
    hdu 3152 Obstacle Course
    hdu 2680 Choose the best route
  • 原文地址:https://www.cnblogs.com/zqy6666/p/12298416.html
Copyright © 2020-2023  润新知