从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
程序员文章站
2022-06-16 13:42:09
...
/**
* 1.从键盘接收两个文件夹路径,
* 把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
*/
public static void fun1(File f1, File f2) {
// 判断当前文件是否是文件夹,如果是文件夹,
// 先在目标路径创建相同名字的文件夹,随后递归进入文件夹
String newFilePaht = f2.getAbsolutePath() + "\\" + f1.getName();
f2 = new File(newFilePaht);
f2.mkdir();
File[] files = f1.listFiles();
for (File file :
files) {
if (file.isFile()) {
newFilePaht = f2.getAbsolutePath() + "\\" + file.getName();
f2 = new File(newFilePaht);
FileCopyUtils.copy(file, f2);
} else {
fun1(file, f2);
}
}
}
/**
* 流工具类
*/
public class FileStreamUtils {
/**
* 拷贝
* @param is
* @param os
*/
public static void copy(InputStream is, OutputStream os) {
try {
byte[] buf = new byte[1024];
int len = 0;
while ((len = is.read(buf)) != -1) {
os.write(buf, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 关流
* @param is
* @param os
*/
public static void close(InputStream is, OutputStream os){
try {
if (is != null)
is.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (os != null)
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 文件copy类
*/
public class FileCopyUtils {
public static void copy(File f1, File f2) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream(f1);
fos = new FileOutputStream(f2);
FileStreamUtils.copy(fis,fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
FileStreamUtils.close(fis,fos);
}
}
}
上一篇: python中类的用法
下一篇: java枚举类的用法