黑马程序员技术交流社区
标题:
有没有谁写过复制文件夹代码的
[打印本页]
作者:
kangxiaoning
时间:
2013-12-3 18:45
标题:
有没有谁写过复制文件夹代码的
有的同学发来参考一下
作者:
小痞痞
时间:
2013-12-3 19:06
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class CopyFileToDest {
/**
* 从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
*/
public static void main(String[] args) throws IOException {
File src = getDir();
File dest = getDir();
if(src.equals(dest)) { //当源文件和目标文件一致时不能拷贝
System.out.println("不能拷贝,源文件和目的文件一致");
} else {
copyDir(src, dest);
}
}
private static File getDir() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个文件夹路径:");
while (true) {
String line = sc.nextLine();
File file = new File(line);
if (!file.exists()) {
System.out.println("你输入的路径不存在,请重新输入:");
} else if (file.isFile()) {
System.out.println("你输入的是文件路径,请重新输入文件夹路径:");
} else
return file;
}
}
private static void copyDir(File src, File dest) throws IOException { //src源文件 dest目的目录
File newDir = new File(dest, src.getName()); //创建目的目录,要拷贝到目的文件下,源文件名字不变
newDir.mkdir(); //创建该文件夹或文件
File[] subFiles = src.listFiles(); //获取源文件的所有文件盒文件夹目录
for (File subFile : subFiles) { //遍历整个目录
if (subFile.isFile()) {
FileInputStream fis = new FileInputStream(subFile); //创建文件源,也就是遍历到的当前文件
//创建File对象,父级目录是我们创建好的目录,名字还是原来文件的名字
FileOutputStream fos =
new FileOutputStream(new File(newDir,subFile.getName()));
byte[] arr = new byte[1024];
int len;
while ((len = fis.read(arr)) != -1) {
fos.write(arr, 0, len);
}
fis.close();
fos.close();
} else if (subFile.isDirectory()) {
copyDir(subFile,newDir); //当是文件夹时已当前文件夹作为源文件夹 、我们建好的文件夹作为目的在进行文件拷贝
}
}
}
}
复制代码
作者:
陪你等日出
时间:
2013-12-3 19:08
本帖最后由 陪你等日出 于 2013-12-3 20:09 编辑
import java.io.*;
class MainClass {
public static void main(String[] args) throws Exception
{
//假设你把E盘下“aaa”这个文件夹给拷贝到E盘并命名为copyfile
findAndCopyPics("E:\\aaa",
"E:\\copyfile");
}
public static void findAndCopyPics(String fpath,String dpath) throws Exception
{
File file = new File(fpath);
if (file.isDirectory())
{
File copyfile = new File(dpath);
copyfile.mkdirs();
}
File[] listFiles = file.listFiles();
for (File f : listFiles) {
if (f.isDirectory())
{
// 是文件夹就递归
findAndCopyPics(fpath + "\\" + f.getName(),dpath+"\\"+f.getName());
}
else
{
// 不是文件夹,即是文件就拷备
copyPics(fpath + "\\" + f.getName(),dpath+"\\"+f.getName());
}
}
}
public static void copyPics(String fpath,String dpath) throws Exception
{
FileInputStream fis = new FileInputStream(fpath);
FileOutputStream fos = new FileOutputStream(dpath);
byte[] b = new byte[1024];
int len = 0;
while ((len=fis.read(b))!=-1)
{
fos.write(b,0,len);
}
fis.close();
fos.close();
}
}
复制代码
呵呵,第二次回答这个问题了,直接复制了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2