Java中实现复制文件或文件夹
来源:互联网 发布:淘宝热点运动专营店 编辑:程序博客网 时间:2024/06/13 05:48
原文地址:http://blog.csdn.net/Dream_JavaWorld/article/details/3682075
拷贝一个文件的算法比较简单,当然,可以对它进行优化,比如使用缓冲流,提高读写数据的效率等。但是在复制文件夹时,则需要利用Flie类在目标文件夹中创建相应的目录,并且使用递归方法。
[java] view plaincopyprint?
- 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中实现复制文件或文件夹
- Java中实现复制文件或文件夹
- Java中实现复制文件或文件夹
- Java中实现复制文件或文件夹
- Java中实现复制文件或文件夹
- Java中实现复制文件或文件夹
- Java中实现复制文件或文件夹
- android-Java中实现复制文件或文件夹 - 随心
- java复制文件或文件夹
- java复制文件或文件夹
- java复制文件或文件夹
- java复制文件或文件夹
- java复制文件或文件夹
- java复制文件或文件夹
- java复制文件或文件夹
- java复制文件或文件夹
- java复制文件或文件夹
- java复制文件或文件夹
- java的23种设计模式
- 两个init方法的区别
- hash_map和map的区别
- PowerDesigner 16.5
- JDK和JRE
- Java中实现复制文件或文件夹
- Apache中BeanUtils的copyProperties的源码分析
- hdu 1233 最小生成树
- TPM emulator 调研报告
- VC中_T("")与L区别
- oralce软件系统下的目录文件夹属性解析
- OpenMP: 体验并行开发
- 使用 JSR 309 Media Server Control API 加速多媒体应用程序开发
- open taobao错误解决 淘宝客不显示商品数据