文件操作(进行文件复制)

关于文件的读取和写入推荐看读取文件和写入文件操作

题目描述

        输入源文件的路径和目标文件的路径,将源文件中的数据全部复制到目标文件中

代码展示

package 文件操作;

import java.io.*;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: wuyulin
 * Date: 2023-08-07
 * Time: 14:00
 */
//完成文件复制
//输入源文件的路径和目标文件的路径,将源文件中的数据全部复制到目标文件中
public class Demo6 {
    public static void main(String[] args) throws IOException {
        Scanner scanner=new Scanner(System.in);
        //输入源文件的路径
        System.out.print("请输入源文件的路径");
        //通过用户输入的路径实例化一个File对象
        File beginFile=new File(scanner.next());
        //检测源文件是否存在
        if(!beginFile.isFile()){
            return;
        }
        System.out.print("请输入目标文件的路径");
        //通过用户输入的路径实例化一个File对象
        File endFile=new File(scanner.next());
        //检测目标文件所在的目录是否存在(文件的上一级)
        //即使目标文件不存在,再向文件中输入数据的时候也会自动创建,所以只要关注测目标文件所在的目录是否存在即可
        if(!endFile.getParentFile().isDirectory()){
            return;
        }
        fileCopy(beginFile,endFile);
    }

    //将源文件beginFile中的数据拷贝到目标文件endFile中
    private static void fileCopy(File beginFile,File endFile) throws IOException {
        //通过try(){}的方法来打开文件可以在执行完{}中的程序后自动关闭文件
        try(InputStream inputBegin=new FileInputStream(beginFile);
            OutputStream outputEnd=new FileOutputStream(endFile)){
            while (true){
                byte[]bytes=new byte[1024];
                int n=inputBegin.read(bytes);
                //监视一下每次循环所读取到的字节个数
                System.out.println(n);
                //当n为-1代表源文件中的数据已经全部被读取出来
                if(n==-1){
                    return;
                }
                //当n不为-1就将数组中的字节数据全部输出到目标文件中
                //参数表示将数组bytes中从下标0开始的n个数据输出到文件中
                outputEnd.write(bytes,0,n);
            }
        }
    }
}

        1.通过用户输入的路径实例化一个源文件的文件对象和目标文件的文件对象,判断文件路径是否是合法的文件路径,源文件由于要提供数据,所以必须得存在,而目标文件即使不存在,在写入数据时也会在对应的目录中自动创建出该文件,但要保证目标文件所在的目录的路径是正确的

        2.拷贝源文件中的数据到目标文件中,实际上就是读取源文件中的数据到字节数组中,读取满数组后将数组中的数据写入目标文件中,一直循环执行,直到源文件中的所有数据都被读取出来

        3.读取和写入分为了字符流和字节流,但我们在复制文件时要使用字节流,因为字节流进行复制可以满足于所有文件进行复制

你可能感兴趣的:(开发语言,java,文件操作)