IO流——字节流4种copy方式

JAVA基本IO流框架

IO流——字节流4种copy方式_第1张图片
Java常用IO流.jpg

字节流整体可分为带缓冲区的流和不带缓冲区的流
可分为逐字节复制的流和逐块复制的流
(块其实就是指byte)
常用的一共有4种复制方式!

示例:复制源文件文本数据到目标文本中
以下列出主要的代码

//逐字节复制

//定义file类分别指向源文件和目标文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
        
//从传入的中的文件对象中获得读取字节或输出字节
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);

//调用read()方法,将文本内容逐字节读取到read中
int read;
while ((read = fis.read()) != -1)
    {//调用write方法逐字节输出到目标文件中
        fos.write(read);
    }

//关闭流
fis.close();
fos.close();
//逐块复制

//定义file类分别指向源文件和目标文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
        
//从传入的中的文件对象中获得读取字节或输出字节
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);

//定义一个能容纳1024个字节的数据byte数组来接收要读取的文本数据
byte[] bs = new byte[1024];
//定义read表示接收的字节长度
int read;
//从输入流中将最多 1024个字节的数据读入一个 byte 数组中
while ((read = fis.read(bs)) != -1)
    {//将 byte 数组中从0 开始的 read 个字节写入此目标文件中
        fos.write(bs, 0, read);
    }

//关闭流
fis.close();
fos.close();
//带缓冲区的逐字节复制

//定义file类分别指向源文件和目标文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
        
//从传入的中的文件对象中获得读取字节或输出字节
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);

//包装流,把操作文件的流增加缓冲区的功能(直接覆盖了文件流)
BufferedInputStream bis =  new BufferedInputStream(fis);;
BufferedOutputStream bos = new BufferedOutputStream(fos);
    
//用read逐字节接收数据  
int read;
//调用read()方法逐字节读取数据到缓冲区中
while ((read = bis.read()) != -1)
    {//write方法将缓冲区中的数据逐字节输出到文本文件中
        bos.write(read);
    }

//关闭流,释放系统资源
bis.close();
bos.close();

//带缓冲区的逐块复制

//定义file类分别指向源文件和目标文件
File src_file1 = new File("from//Test.java");
File des_file1 = new File("To//Test.java");
        
//从传入的中的文件对象中获得读取字节或输出字节
FileInputStream fis = new FileInputStream(src_file);
FileOutputStream fos = new FileOutputStream(des_file);

//包装流,把操作文件的流增加缓冲区的功能(直接覆盖了文件流)
BufferedInputStream  bis =  new BufferedInputStream(fis);;
BufferedOutputStream  bos = new BufferedOutputStream(fos);
    

//定义一个能容纳1M个字节的数据byte数组来接收要读取的文本数据
byte[] bs = new byte[1024 * 1024];
//len表示要写入的字节数。 
int len = 0;
//调用read()方法逐字块读取byte数组到缓冲区中(每次读1M)
while ((len = bis.read(bs, 0, 1024)) != -1)
    {//将指定 byte 数组中从0 开始的 len 个字节写入此缓冲的输出流
        bos.write(bs, 0, len);
    }

//关闭流释放操作系统资源,包含flush的功能
//bos.flush()将缓冲区的数据冲入到输出文本中,只有output需要冲出
bis.close();
bos.close();

你可能感兴趣的:(IO流——字节流4种copy方式)