如何将下面的复制文件的代码改写成 键盘录入的形式呢?
就是用户 输入 源目录和目的目录,我就给他复制到目的中
public class CopyTextTest {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File oldFile = new File("E:\\d");
System.out.println("oldFile:" + oldFile.length());
File newFile = new File("F:\\");
copyFiles(oldFile, newFile);
System.out.println("newFile:" + newFile.length());
}
/**
* 判断对文件进行深度遍历,判断是文件并且不是隐藏的, 就获取该文件的绝对路径和文件名在新的盘符下创建
*
* @param oldFile
* @param newFile
* @throws IOException
*/
public static void copyFiles(File oldFile, File newFile) throws IOException {
File[] file = oldFile.listFiles();// 将目中的文件存储进数组
FileInputStream fis = null;
FileOutputStream fos = null;
for (int i = 0; i < file.length; i++) {
if (file.isDirectory()) {
// 获取该文件的绝对路径
String abspath = file.getAbsolutePath();
String a = abspath.toString().replaceFirst("E", "F"); // 将盘符替换
// 通过替换后的路径名和目录名将在目的地创建一个文件目录
new File(a).mkdirs();
copyFiles(file, newFile); // 对目录进行递归
} else {
// 若果是文件,就通过输入输出流将(路径+文件)写到目的地下
String filepath = file.getParent(); // 获取该文件的父目录绝对路径
String filename = file.getName(); // 获取该文件的名称
File goName = new File(filepath, filename);// 将文件封装成对象
fis = new FileInputStream(goName); //读取文件
String newpath = filepath.replaceFirst("E", "F");
fos = new FileOutputStream(newpath.concat(filename)); //指定写入文件的目的地
byte[] buf = new byte[1024 * 1024];
int len = 0;
while ((len = fis.read(buf)) != -1) {
fos.write(buf, 0, len);
}
fis.close();
fos.close();
}
}
}
} |
|