黑马程序员技术交流社区
标题:
想写个复制文件夹的程序,写了半天还是有错误,有时间再改吧。
[打印本页]
作者:
noiary
时间:
2014-11-5 23:53
标题:
想写个复制文件夹的程序,写了半天还是有错误,有时间再改吧。
运行起来就说找不到指定路径,
复制文件路径的确有些混乱,
有时间再慢慢研究!
/**
*
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author always
* @题目:复制一个文件夹,包括里面逐级目录中的内容。
*/
public class DirectoryCopy {
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 关联待复制文件夹
File baseDir = new File("D:\\Java\\java027\\day07");
// 指定拷贝文件夹的父目录
File parent = new File("D:\\Java");
dirCopy(baseDir, parent);
}
public static void dirCopy(File baseDir, File parent) {
String dirName = baseDir.getName();
/* 如果两个文件夹在同一目录下,复制后的文件夹名字尾部+“ 复件” */
if (parent.getName().equals(baseDir.getParent()))
dirName = baseDir.getName() + " 复件";
File newDir = new File(parent, dirName);
String newDirs = newDir.getAbsolutePath();
dirRecursion(baseDir, newDirs);
}
/* 文件夹递归 */
public static void dirRecursion(File baseDir, String newDir) {
File[] files = baseDir.listFiles();
for (File f : files) {
if (!f.isHidden()) {
if (f.isDirectory()) {
newDir = newDir + "\\" + f.getName();
dirRecursion(f, newDir);
} else {
newDir = newDir + "\\" + f.getName();
fileWrite(f, newDir);// 如果不是文件夹,调用文件写入函数
}
}
}
}
/* 把文件写入到硬盘 */
public static void fileWrite(File file, String newDir) {
BufferedInputStream bufis = null;
BufferedOutputStream bufos = null;
try {
bufis = new BufferedInputStream(new FileInputStream(file));
} catch(IOException e) {
throw new RuntimeException("文件读取失败" + e);
}
try {
bufos = new BufferedOutputStream(new FileOutputStream(newDir));
} catch (IOException e) {
throw new RuntimeException("文件写入失败" + e);
}
try {
int by = 0;
while ((by = bufis.read()) != -1) {
bufos.write(by);
}
} catch (IOException e) {
throw new RuntimeException("文件读写失败" + e);
}
finally {
try {
if (bufis != null)
bufis.close();
} catch (IOException e) {
System.out.println(e);
}
try {
if (bufos != null)
bufos.close();
} catch (IOException e) {
System.out.println("关闭bufos失败");
}
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2