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