zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java中实现复制文件或文件夹详解编程语言

JAVA文件编程语言 实现 详解 复制 文件夹
2023-06-13 09:11:43 时间

 拷贝一个文件的算法比较简单,当然,可以对它进行优化,比如使用缓冲流,提高读写数据的效率等。但是在复制文件夹时,则需要利用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); 

} 

 

16619.html

cjava