• 字节缓冲流& 字符流


    1. 字节缓冲流

    1.1 字节缓冲流构造方法【应用】

    • 字节缓冲流介绍
      • IBufferOutputStream:该类实现缓冲 输出流。通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用。
      • IBufferedlnputStream:创建BufferedInputStream将创建一个内部缓冲区数组。当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节
      • 构造方法
    方法名说明
    BufferOutputStream(OutputStream out)创建字节缓冲输出流对象
    BufferedlnputStream(InputStream in)创建字节缓冲输入流对象
    • 示例代码
    public class BufferStreamDemo{
    	public sattic void main(String[] args) throws IOException {
    	//字节缓冲输出流:BufferedOutputStream(OutputStream out) 
    	BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("muByteStream\bos.txt"));
    	//写数据
    	bos.write("hello
    ".getBytes());
    	bos.write("world
    ".getBytes());
    	//释放资源
    	bos.close();
    
    
    
    	//字节缓冲输入流:BufferedInputStream(InputStream in)
    	BufferedInputStream bis = new BufferedInputStream(new FileInputStream("myByteStream\bos.txt"));
    	//一次读取一个字节数据
    	int by;
    	while((by =bis.rea())!=-1) {
    		System.out.print((char)by);
    	}
    	
    	//一次读取一个字节数组数据
    	byte[] bys = new byte[1024];
    	int len;
    	while ((len = bis.read())!=-1) {
    	System.out.print(new String(bys,o,len));
    	}
    	//释放资源
    	bis.close();
      }
    }
    
    

    1.2 字节流复制视频【应用】

    • 案例需求
      把"E:JAVASEjava.avi"复制到模块目录下的“java.avi”
    • 实现步骤
      • 根据数据源创建字节流输入流对象
      • 根据目的地址创建字节输出流对象
      • 读写数据,复制视频
      • 释放资源
    • 代码实现
    public class CopyAviDemo {
    	public static void main(String[] args) throws IOException {
    	//记录开始时间
    	long startTime = System.currentTimeMillis();
    
       //复制视频
       method1();
       method2();
       method3();
       method4();
       
    	
       //记录结束时间
       long endTime = System.currentTimeMillis();
       System.out.println("共耗时:"+(endTime-StartTime)+"毫秒");
       }
    
      //基本字节流一次读写一个字节
      public static void method1 throws IOException {
      	//"E:JAVASEjava.avi
      	//模块目录下的 java.avi
      	FileInputStream fis = new FileInputStream("E:JAVASEjava.avi");
      	FileOutputStream fos = new FileOutputStream("mySbyteStream\java.avi");
      	int by;
      	while((by = fis.read())!=-1){
      		fos.write(by);
      	}
      	fos.close();
      	fis.close();
      }
    
     //基本字节流一次读写一个字节数组
      public static void method2 throws IOException {
      	//"E:JAVASEjava.avi
      	//模块目录下的 java.avi
      	FileInputStream fis = new FileInputStream("E:JAVASEjava.avi");
      	FileOutputStream fos = new FileOutputStream("mySbyteStream\java.avi");
      	byte[] bys = new byte[1024];
      	int len;
      	while((len = fis.read(bys))!=-1){
      		fos.write(bys,0,len);
      	}
      	fos.close();
      	fis.close();
      }
      
      //字节缓冲流一次读写一个字节
      public static void method3 throws IOException {
      	BufferedInputStream bis = new BufferedInputStream("E:JAVASEjava.avi");
      	BufferedOutputStream bos = new BufferedOutputStream("mySbyteStream\java.avi");
      	int by;
      	while((by = bis.read())!=-1){
      		bos.write(by);
      	}
      	bos.close();
      	bis.close();
      }
    
    
      //字节缓冲流一次读写一个字节数组
      public static void method3 throws IOException {
      	BufferedInputStream bis = new BufferedInputStream("E:JAVASEjava.avi");
      	BufferedOutputStream bos = new BufferedOutputStream("mySbyteStream\java.avi");
      	byte[] bys = new byte[1024];
      	int len;
      	while((len = bis.read(bys))!=-1){
      		bos.write(bys,0,len);
      	}
      	bos.close();
      	bis.close();
      }
    }
    

    2. 字符流

    2.1 为什么会出现字符流【理解】

    2.2 编码表【理解】

    2.3 字符串中的编码解码问题【应用】

    2.4 字符流中的编码解码问题【应用】

    2.5 字符流写数据的5种方式【应用】

    2.6 字符流读数据的2中方式【应用】

    2.7 字符流复制Java文件【应用】

    2.8 字符流复制Java文件改进版【应用】

    2.9 字符缓冲流【应用】

    2.10 字符缓冲流复制Java文件【应用】

    2.11 字符缓冲流特有功能【应用】

    2.12 字符缓冲流特有功能呢复制Java文件【应用】

    2.13 IO流小结【理解】

    • 字节流
    • 字符流

    3.练习案例

    3.1 集合到文件【应用】

    3.2文件到集合【应用】

    3.3 点名器【应用】

    3.4 集合到文件改进版【应用】

    3.5 文件到集合改进版【应用】

  • 相关阅读:
    PDA固定资产条码管理系统软件-解决固定资产实物清查的瓶颈问题,大大提高清查效率
    互联网+下PDA移动智能手持POS超市收银开单软件
    搭建免费代理池
    解析库beautifulsoup
    爬取汽车之家新闻
    请求库之requests库
    网络状态码301与302
    正向代理与反向代理
    垃圾回收机制详解
    HTTP协议详解
  • 原文地址:https://www.cnblogs.com/JhonnyLee/p/13751350.html
Copyright © 2020-2023  润新知