【加强】通过键盘录入的方式来拷贝文件

package InOut;

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

public class InOutDemo3 {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
//        需要将所有定义的文件和字符串的等级提升
        File Filein;//用来装需要拷贝的文件的文件夹
        File filein;//用来装需要拷贝的文件
        String sFilein;//需要拷贝的文件名

//      判断原文件所在的文件夹是否存在
        while (true) {
            System.out.println("请输入原文件的文件夹");
            String s = sc.nextLine();
            Filein = new File(s);
            if (!Filein.isDirectory()) {
                System.out.println("请输入正确的文件夹路径");
            } else {
                break;
            }

        }

//        判断原文件是否存在
        while (true) {
            System.out.println("请输入原文件名");

            sFilein = sc.nextLine();
//          判断文件是否存在的话,需要加上原文件所在的文件夹路径
//          所有这里用一个file类去接收
//          filein = new File(Filein, sFilein):使用到file的构造方法
//            添加文件夹和文件名(文件名是String类型的)
            filein = new File(Filein, sFilein);
            if (!filein.isFile()) {
                System.out.println("请输入正确的文件名(加后缀)");
            } else {
                break;
            }

        }


        File Fileout;//用来装目的地的路径
        File fileout;//用来装目的地路径和重新命名的文件名的
        String sFileout;//重新命名的文件名

//        判断目的地文件夹路径是否存在
        while (true) {
            System.out.println("请输入要传入的位置");
            String s = sc.nextLine();

            Fileout = new File(s);
            if (!Fileout.isDirectory()) {
                System.out.println("请输入正确的位置");
            } else {
                break;
            }
        }

//          使用字符串切割(split),切割原文件的文件名
//        并且存入到一个字符串数组中
//        通过.来切割
        String[] sss = sFilein.split("\\.");

        System.out.println("请为文件命名");
//        通过索引获得原文件的后缀名
//        通过字符串拼接
//        主要是为了和原文件类型一直
        sFileout = sc.nextLine() +"."+ sss[1];
        fileout = new File(Fileout, sFileout);


        FileInputStream fis = new FileInputStream(filein);

        FileOutputStream fos = new FileOutputStream(fileout);

        byte[] by = new byte[1024 * 8];
        int len;

        while ((len = fis.read(by)) != -1) {
            fos.write(by, 0, len);
        }
        fis.close();
        fos.close();

    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值