这篇文章主要为大家详细介绍了Java的IO流实现文件和文件夹的复制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Java的IO流实现文件和文件夹复制的具体代码,供大家参考,具体内容如下
1、使用文件流对单个文件进行复制
将某个文件复制到指定的路径下:
//复制文件
public static void copy(File f1, String path) throws IOException {
System.out.println("***copy***" + f1.getName());
FileInputStream in = new FileInputStream(f1);
FileOutputStream out = new FileOutputStream(path + f1.getName());
byte[] bytes = new byte[512];
while ((in.read(bytes)) != -1) {
out.write(bytes, 0, bytes.length);
}
out.close();
in.close();
}
2、使用文件流将文件及文件夹下的文件进行复制
将a文件夹下的文件拷贝到b文件夹里。a和b文件夹可能存在相同文件,若b文件夹下已经存在a文件夹中的文件则不拷贝,若不存在则拷贝。
(1)递归复制文件夹下的文件
public static void copyAll(File A, File B) throws IOException {
boolean flag = true;
if (!B.exists()) {
B.mkdir();
}
String[] a=A.list();
//遍历A中所有文件及文件夹
for (int i = 0; i < a.length; i++) {
System.out.println("a:"+a[i]);
//若A中含有文件夹
if (new File(A.getPath()+"/"+a[i]).isDirectory()) {
File newFolder=null;
if (! ( new File(B.getPath()+"/"+a[i]).exists() )) {
newFolder = new File(B, a[i]);
newFolder.mkdir(); //创建子文件夹
}
//递归,判断
copyAll(new File(A.getPath()+"/"+a[i]), newFolder);
}
//若A中含有文件,直接复制文件
else {
copyOtherFile(new File(A.getPath()+"/"+a[i]), B);
}
}
}
(2)若含有同名文件,则不进行复制
public static void copyOtherFile(File srcfile, File destfile) throws IOException {
File[] destlist = destfile.listFiles();
boolean flag = true;
flag = true;
for (File f2 : destlist) {
System.out.println("f:" + srcfile.getName());
System.out.println("f2:" + f2.getName());
//含有同名文件,不进行复制
if (srcfile.getName().equals(f2.getName())) {
System.out.println("相同");
flag = false;
break;
} else {
System.out.println("不相同");
}
}
if (flag) {
copy(srcfile, destfile.getPath() + "/");
}
}
(3)主函数调用
public static void main(String[] args) throws IOException {
File file = new File("F:/a");
File file2 = new File("F:/b");
copyAll(file, file2);
System.out.println("复制成功!!!");
}
下一篇:Java实现文件及文件夹的删除
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:Java的IO流实现文件和文件夹的复制
基础教程推荐
猜你喜欢
- java基础知识之FileInputStream流的使用 2023-08-11
- Java实现线程插队的示例代码 2022-09-03
- Java数据结构之对象比较详解 2023-03-07
- Java并发编程进阶之线程控制篇 2023-03-07
- java实现多人聊天系统 2023-05-19
- springboot自定义starter方法及注解实例 2023-03-31
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java实现查找文件和替换文件内容 2023-04-06
- Java文件管理操作的知识点整理 2023-05-19