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();
}
}
【加强】键盘录入拷贝文件(改)
最新推荐文章于 2024-08-16 23:08:28 发布