java学习第19天--IO2-BufferedInputStream-BufferedOutputStream

try case 异常语句

/*
 * 自动关闭资源的try块
 */
public class FileInputStreamDemo3 {

public static void main(String[] args) {

try(FileInputStream fis = new FileInputStream("a.txt");
FileInputStream fis2 = new FileInputStream("a.txt")){

byte[] bys = new byte[1024];
int len = 0;
while((len = fis.read(bys)) != -1){
System.out.print(new String(bys,0,len));
}
//省略关闭资源操作

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}



实现同一个项目路径下的文本文件的复制
package com.czz.test;
 
import java.io.FileInputStream;
import java.io.FileNotFoundException ;
import java.io.FileOutputStream;
 
public class CopyFileDemo {
 
   public static void main(String[] args ) throws Exception {
      // 创建源文件
      FileInputStream fis = new FileInputStream( "a.txt" ); // 表示文件路径在当前项目下
     
      // 创建目标文件
      FileOutputStream fos = new FileOutputStream( "czz.txt" ); // 表示文件路径在当前项目下
     
      byte [] bys = new byte [1024];
      int len = 0;
      while (( len = fis .read( bys )) != -1) {
         fos .write( bys );
      }
 
      // 关闭输入输出字符流
      fis .close();
      fos .close();
   }
 
}
 

实现不同路径下的文本文件的复制
package com.czz.test;
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
 
public class CopyFileDemo {
 
   public static void main(String[] args ) throws Exception {
      // 创建源文件
      FileInputStream fis = new FileInputStream( "a.txt" ); // 表示文件路径在当前项目下
     
      // 创建目标文件
      FileOutputStream fos = new FileOutputStream( "E:\\niling\\czz.txt" ); // 表示文件路径在 E:\\ niling 文件下
     
      byte [] bys = new byte [1024];
      int len = 0;
      while (( len = fis .read( bys )) != -1) {
         fos .write( bys );
      }
 
      // 关闭输入输出字符流
      fis .close();
      fos .close();
   } 
}
 
实现图片和Mp3的代码和上面的差不多,只需将修改为相应的图片或Mp3所在的文件路径即可.

BufferedOutputStream类与BufferedInputStream类
BufferedOutputStream:
构造方法:
BufferedOutputStream(OutputStream out)
    通过包装一个字节输出流对象,使用默认的大小创建缓冲区流对象
BufferedOutputStream(OutputStream out,int size)
    通过包装一个字节输出流对象,使用指定的大小创建缓冲区流对象

写方法:
void write(int b)
    将一个字节写入缓冲区流
void write(byte[] b)
    将一个字节数组写入缓冲区
void write(byte[] b,int off,int len)
    将一个字节数组的一部分写入字节缓冲区流(不常用
缓冲区满,或者调用 flush 方法,或者关闭流,此时把缓冲区中的数据写出到节点流中

例:
package com.oldboyedu.test04;
 
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
 
/*
 * BufferedOutputStream(OutputStream out)
 * BufferedOutputStream(OutputStream out, int size)//
 */
public class BufferedOutputStreamDemo1 {
 
   public static void main(String[] args ) throws Exception {
      //BufferedOutputStream(OutputStream out)
      FileOutputStream fos = new FileOutputStream( "bos7.txt" ); //
     
      BufferedOutputStream bos = new BufferedOutputStream( fos );
     
//    bos.write(98);//b
      // 缓冲流 , 写数据的方法 , 是直接将数据写到缓冲区 , 并不是流当中 .
      // 有三种情况会刷新缓冲区 :
      //1. 手动刷新
      //2. 缓冲区满
      //3. 流关闭
     
      // 手动刷新缓冲区
      bos .flush();
     
      // 演示缓冲区满自动刷新
      /*
      for( int i = 0;i<8192;i++){
         bos.write(98);
      }
      */
     
      // 关闭流是首先自动刷新缓冲区
      bos .close();
      fos .close();
   }
}
 
BufferedInputStream
构造方法:
BufferedInputStream(InputStream in)
    通过包装一个输入流,创建一个带默认缓冲区的字节输入流对象
BufferedInputStream(InputStream in,int size)
    通过包装一个输入流,创建一个带指定缓冲区的字节输入流对象

读取数据:
int read()
    从缓冲区中读取一个字节
int read(byte[] b)
    从缓冲区中读取字节放到一个字节数组中
int read(byte[] b,int off,int len)
    从缓冲区中读取字节,存放到数组的指定开始处,并指定读取长度(不常用)
例:
package com.oldboyedu.test04;
 
import java.io.BufferedInputStream;
import java.io.FileInputStream;
 
/*
 * BufferedInputStream(InputStream in)
 * BufferedInputStream(InputStream in, int size)
 *
 */
public class BufferedInputStreamDemo1 {
 
   public static void main(String[] args ) throws Exception {
      BufferedInputStream bis = new BufferedInputStream( new FileInputStream( "a.txt" ));
 
      // 一次读一个字节
//    int b = 0;
//    while((b = bis.read()) != -1){
//       System.out.print((char)b);
//    }
     
      // 一次读一个字节数组
      byte [] bys = new byte [1024];
      int len = 0;
      while (( len = bis .read( bys )) != -1){
         System. out .print( new String( bys ,0, len ));
      }
     
      // 释放资源
      bis .close();
   }
}
 
流的测试:
package com.oldboyedu.test05;
 
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
 
public class StreamTest {
 
   public static void main(String[] args ) throws Exception{
      long start = System. currentTimeMillis ();
//    test1();//701996
//    test2();//1266
     
//    test3();//6830
      test4 (); //319
      System. out .println(System. currentTimeMillis () - start );
 
   }
  
   // 缓冲字节流 , 一次读写一个字节数组
   public static void test4() throws Exception{
      BufferedInputStream bis = new BufferedInputStream( new FileInputStream( "c:/01.avi" ));
      BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream( "c:/demo/04.avi" ));
     
      byte [] bys = new byte [1024];
      int len = 0;
      while (( len = bis .read( bys )) != -1){
         bos .write( bys , 0, len );
      }
     
      bis .close();
      bos .close();
   }
  
   // 缓冲字节流 , 一次读写一个字节
   public static void test3() throws Exception{
      BufferedInputStream bis = new BufferedInputStream( new FileInputStream( "c:/01.avi" ));
      BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream( "c:/demo/03.avi" ));
     
      int b = 0;
      while (( b = bis .read()) != -1){
         bos .write( b );
      }
      bis .close();
      bos .close();
   }
  
   // 基本字节流 , 一次读写一个字节数组
   public static void test2() throws Exception{
      // 封装源文件
      FileInputStream fis = new FileInputStream( "c:/01.avi" );
      // 封装目标文件
      FileOutputStream fos = new FileOutputStream( "c:/demo/02.avi" );
     
      // 循环读写数据
      byte [] bys = new byte [1024];
      int len = 0;
      while (( len = fis .read( bys )) != -1){
         fos .write( bys , 0, len );
      }
     
      // 释放资源
      fos .close();
      fis .close();
   }
  
   // 基本字节流 , 一次读写一个字节
   public static void test1() throws Exception{
      // 封装源文件
      FileInputStream fis = new FileInputStream( "c:/01.avi" );
      // 封装目标文件
      FileOutputStream fos = new FileOutputStream( "c:/demo/01.avi" );
     
      // 循环读写数据
      int b = 0;
      while (( b = fis .read()) != -1){
         fos .write( b );
      }
     
      // 释放资源
      fis .close();
      fos .close();
   }
}
 












猜你喜欢

转载自blog.csdn.net/czz1141979570/article/details/80092441