Java复制文件夹到指定文件夹
程序员文章站
2022-03-12 09:41:55
...
思路:
(1)传入两个文件对象 源文件,目标文件
(2)判断源文件对象是文件还是文件夹
(3)如果是文件,则直接copy该文件
(4)如果为文件夹,则先copy文件夹,再依次获得该文件夹的子文件对象,用它的子文件对象依次递归调用copy方法。
代码实现:
public class CopyFile {
/**
* @param original 要拷贝的文件或文件夹
* @param target 拷贝到目标
*/
public static void copy(File original, File target) {
if (original.exists()) {
if (original.isDirectory()) {//判断源文件是否是文件夹
File dir = new File(target, original.getName());
if (!dir.exists()) {
dir.mkdir();//在目标文件夹下创建一个和源文件夹目录结构一样的文件夹
}
File[] files = original.listFiles();//遍历源文件夹下的子集
for (File file : files) {
copy(file, dir);//递归
}
} else {//是文件就写入到和源文件目录结构一样的文件中
copyfile(original,new File(target,original.getName()));
}
}
}
public static void copyfile(File original, File target) {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
inputStream = new FileInputStream(original);
outputStream = new FileOutputStream(target,true);
byte bytes[] = new byte[1024 * 20];
int length = -1;
while ((length = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
outputStream.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
copy(new File("F:\\sc学习"),new File("F:\\new"));
}
上一篇: k8s的yaml 文件配置详解