【加强】键盘录入拷贝文件(改)

package InOut;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class InOutDemo4 {
    public static void main(String[] args) throws IOException {
//      定义一个hashmap集合
        Map<String, String> map = new HashMap<>();
        Scanner sc = new Scanner(System.in);

        File Filein;//用来装需要拷贝的文件的文件夹
        File filein;//用来装需要拷贝的文件
        String sFilein;//需要拷贝的文件名
        String endName;//获取文件后缀名

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

        }


        String name;
        String[] split;
//        将文件夹中的所有文件装进一个文件数组当中
        File[] fileIns = Filein.listFiles();
//        遍历数组
        for (File in : fileIns) {
//        判断是否为文件
            if (in.isFile()) {
//                如果是文件,需要获取文件名加后缀
                name = in.getName();
//                通过“.”进行切割
                split = name.split("\\.");
//                将文件名作为key,文件后缀名作为value,存入hashmap集合
                map.put(split[0], split[1]);
            }

        }

        while (true) {
            System.out.println("请输入原文件名");
//            键盘输入文件名
            sFilein = sc.nextLine();
//            判断文件名是否在hashmap集合中出现
            if (map.containsKey(sFilein)) {
//                如果出现,就需要获取对应的value值
                endName = map.get(sFilein);
                break;
            } else {
                System.out.println("文件不存在");
            }
        }
//          这个file中第一个参数为原文件所在文件夹的地址
//        第二个参数为文件名和“.”还有后缀名的拼接
        filein = new File(Filein, sFilein + "." + endName);


        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;
            }
        }

        System.out.println("请为文件命名");
//       通过字符串拼接
//       主要是为了和原文件类型一直
        sFileout = sc.nextLine() + "." + endName;

        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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值