拷贝一个文件的算法比较简单,当然,可以对它进行优化,比如使用缓冲流,提高读写数据的效率等。但是在复制文件夹时,则需要利用Flie类在目标文件夹中创建相应的目录,并且使用递归方法。
import java.io.*;
/**
* 复制文件夹或文件夹
*/
public class CopyDirectory {
// 源文件夹
static String url1 = "f:/photos";
// 目标文件夹
static String url2 = "d:/tempPhotos";
public static void main(String args[]) throws IOException {
// 创建目标文件夹
(new File(url2)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(url1)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 复制文件
copyFile(file[i],new File(url2+file[i].getName()));
}
if (file[i].isDirectory()) {
// 复制目录
String sourceDir=url1+File.separator+file[i].getName(); String targetDir=url2+File.separator+file[i].getName(); copyDirectiory(sourceDir, targetDir);
}
}
}
// 复制文件
public static void copyFile(File sourceFile,File targetFile) throws IOException{
// 新建文件输入流并对它进行缓冲
FileInputStream input = new FileInputStream(sourceFile);
BufferedInputStream inBuff=new BufferedInputStream(input);
// 新建文件输出流并对它进行缓冲
FileOutputStream output = new FileOutputStream(targetFile);
BufferedOutputStream outBuff=new BufferedOutputStream(output);
// 缓冲数组
byte[] b = new byte[1024 * 5];
int len;
while ((len =inBuff.read(b)) != -1) {
outBuff.write(b, 0, len);
}
// 刷新此缓冲的输出流
outBuff.flush();
//关闭流
inBuff.close();
outBuff.close();
output.close();
input.close();
}
//复制文件夹
public static void copyDirectiory(String sourceDir, String targetDir) throws IOException {
// 新建目标目录
(new File(targetDir)).mkdirs();
// 获取源文件夹当前下的文件或目录
File[] file = (new File(sourceDir)).listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
// 源文件
File sourceFile=file[i];
// 目标文件
File targetFile=new File(new File(targetDir).getAbsolutePath() +File.separator+file[i].getName());
copyFile(sourceFile,targetFile);
}
if (file[i].isDirectory()) {
// 准备复制的源文件夹
String dir1=sourceDir + "/" + file[i].getName();
// 准备复制的目标文件夹
String dir2=targetDir + "/"+ file[i].getName();
copyDirectiory(dir1, dir2);
}
}
}
分享到:
相关推荐
java中实现复制文件和文件夹 public static void copyFile(File sourceFile,File targetFile) throws IOException{ // 新建文件输入流并对它进行缓冲 FileInputStream input = new FileInputStream(sourceFile)...
java用递归实现文件及文件夹的复制,注意递归中的变量属性
改代码,用java简单的实现了文件夹、文件的复制
里面有整个java复制文件及复制文件夹的代码,直接复制到eclipse等开发工具中既能使用;
java文件夹和文件复制,
java实现工具类实现复制、粘贴、剪切、删除文件和文件夹
java操作文件及文件夹 移动、复制、删除文件及文件夹
Java文件夹复制(远程复制(网络传输),用于远程备份文件)(支持文件夹,嵌套子文件夹) import java.io.*; import java.util.*; public class FileSelection { private File rootDirectory;//根目录 private ...
利用java实现文件的复制整个文件夹内容,实现文件的复制
java 文件或文件夹 创建 删除 复制 移动 指定目录等
复制整个文件夹内容(包含子文件夹中的所有内容) 5. 新建目录 6. 新建文件 7. 移动文件或文件夹 8. 重命名文件/文件夹 9. 查看指定路径下的所有文件的全路径 10. 查看指定路径下的所有文件 11. 列出...
JAVA程序实现文件夹及其嵌套文件和图片等所有格式的复制
用户java实现了文件夹的复制。主要是用了递归方法遍历文件夹下的子文件
java多线程复制文件
用java实现的多级文件夹的复制,可用于文件复制的复制与备份
java实现一个目录下全部文件复制到另一目录。过程主要是 循环第一个目录下的文件,然后输出流到另一个目录。
纯java实现,nio复制。其中文件夹复制同步使用channel实现,文件夹的交并集对比使用lamda实现,文件的同步比对逻辑通过比对文件的大小、日期、修改时间等实现
java 批量复制文件并把路径插入到数据库表中; 包括:读取文件夹列表、子文件夹;新建一个文件夹;Oracle数据库链接; 修改一下链接数据库以及文件夹路径即可
此文件支持对文件及文件夹结构的多种操作,其中包括: 读取文本文件内容 遍历指定路径下指定后缀的所有文件 新建目录 多级目录创建 新建文件 有编码方式的文件创建 删除文件 删除文件夹 删除指定文件夹下所有文件 ...