如何使用Java实现复制文件夹的操作
程序员文章站
2024-03-09 10:30:41
...
如何使用Java实现复制文件夹的操作
该操作需要对Java.IO中的字节流有一定的掌握,并且能清晰地使用递归来遍历文件夹。
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.File;
/**
* Author:Tian90
*/
public class DirectoryCopy {
public static void main(String[] args) {
String src = "";//要复制的文件或文件夹路径
String dest = "";//目标路径
copy(src,dest);
}
public static void copy(String src,String dest){
File file = new File(src);
if (!file.exists()){
throw new RuntimeException("系统找不到指定的文件夹:"+src);
}
//初始化IO流
InputStream is = null;
OutputStream os = null;
//判断如果当前文件为文件夹时,在目标目录,新建该文件夹
if (file.isDirectory()){
//获取源文件夹的listfiles(包含源文件夹下所有的文件夹与文件)
File[] files = file.listFiles();
/**
* 拼接并创建目标文件夹路径
* dest:用户想要复制的路径
* File.separatorChar:等同于"/"
* file.getName()就是当前文件夹的名字
*/
String cur_Dest = dest+File.separatorChar+file.getName();
//获取文件夹对象并创建
File cur_File = new File(cur_Dest);
//判断是否创建成功
if(!cur_File.mkdir()){
throw new RuntimeException("非法路径,包含未知的文件夹:"+dest);
}
for (File temp:files){
copy(temp.getAbsolutePath(),cur_File.getAbsolutePath());
}
}else {
//如果是文件则创建流并复制
try{
is = new FileInputStream(file);
os = new FileOutputStream(dest+File.separatorChar+file.getName());
int len = -1;
byte[] datas = new byte[1024];//缓存为1kb
while ((len = is.read(datas))!=-1){
os.write(datas);
}
}catch (IOException e){
e.printStackTrace();
}finally {
//先创建的后释放,后创建的先释放
try {
if(os!=null){
os.close();
}
}catch (IOException e){
e.printStackTrace();
}
try {
if(is!=null){
is.close();
}
}catch (IOException e){
e.printStackTrace();
}
}
}
}
}
上一篇: I/O复制文件夹&递归&改名