用字节流复制文本文档文件或者图片

package file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class try2 {
    public static void main(String[] args) {

    String newFilePath="D:\\xk.jpg";//定义文件复制后的新地址
    String oldFilePath="C:\\Users\\Administrator\\Desktop\\cute.jpg";//定义文件的原地址
    copyFile(newFilePath, oldFilePath);调用复制方法
}

static void copyFile(String newFilePath,String oldFilePath)
{   
    FileInputStream fileInputStream=null;
    BufferedInputStream bufferedInputStream=null;
    FileOutputStream fileOutputStream=null;
    BufferedOutputStream bufferedOutputStream=null;//初始化输入输出流对象、缓冲区对象为全局变量、方便文件流最后调用关闭方法
    try {
        fileInputStream=new FileInputStream(oldFilePath);
        bufferedInputStream=new BufferedInputStream(fileInputStream);
//使用缓存区 无论读与写,先一次性塞满缓冲 区再让缓冲区执行读和写,提升效率直接进行读写,是操作的硬盘, 缓冲区存放是操作的内存。当然内存的执行速度是远远硬盘的执行cpu与硬盘打交道 远远低于cpu与内存的沟通。

        fileOutputStream=new FileOutputStream(newFilePath);
        bufferedOutputStream=new BufferedOutputStream(fileOutputStream);

        byte[] bytes=new byte[100];//定义一个字节数组用于存放文件流读取(吸入)和输出(吐出)时的字节
        int length=0;
        while((length=bufferedInputStream.read(bytes))!=-1)//当文件读取完毕时 read方法返回-1

        {
            bufferedOutputStream.write(bytes,0,length);//将文本文档或者图片读过来的字节直接输出到某个文件中 length有可能是100(字节数组长度),但也有可能是一个小于100的数,这里length是可变的,所以直接用有三个参数的write方法进行输出
        }
        bufferedOutputStream.flush();//这句话是一定要写的 是为了让缓冲区强制写入
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    finally {//finall中的语句是一定会执行的 通常用于文件流的关闭 或某个对象使用之后的关闭
        if(bufferedOutputStream!=null) {
        try {
            bufferedOutputStream.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }   
        if(fileOutputStream!=null) {
        try {
            fileOutputStream.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if(bufferedInputStream!=null) {
            try {
                bufferedInputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        if(fileInputStream!=null) {
            try {
                fileInputStream.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}
    }
}}   

可以看到复制过来的图片(位于D盘根目录下) 文本文档的复制也可以使用
这里写图片描述
我只是想发张photo 哈哈哈哈哈哈 然后写写注释加深知识点记忆

猜你喜欢

转载自blog.csdn.net/qq_39497607/article/details/81569519