Java复制文件夹或者复制文件
摘要:文件夹不能直接复制,如果是文件夹需要先创建文件夹,然后再复制文件。
import java.io.*;
public class Copy {
//用于文件夹和文件的复制
public static void main(String[] args) throws IOException {
//要复制的文件或文件夹路径
String src = "E:\\Test1";
//复制文件或文件夹到目标文件夹下,注意这里复制的可能是文件也可能是文件夹,但是目标一定是文件夹
String dest = "E:\\test";
copy(src, dest);
}
public static void copy(String src, String dest) throws IOException {
File file = new File(src);
if(!file.exists()){
//可以起到一个抛出异常中断程序的效果
throw new RuntimeException("找不到指定路径下的文件或文件夹"+src);
}
//初始化I/O流
InputStream in = null;
OutputStream out = null;
//如果文件夹是目录,则在指定路径下新建目录,如果是文件则直接复制
if(file.isDirectory()){
File[] files = file.listFiles();
String cur = dest + File.separatorChar + file.getName();
File file1 = new File(cur);
if(!file1.mkdir()){
throw new RuntimeException("非法路径"+dest);
}
for(File file2 : files){
copy(file2.getAbsolutePath(), file1.getAbsolutePath());
}
}else{
in = new FileInputStream(file);
out = new FileOutputStream(dest + File.separatorChar + file.getName());
//缓存数组
byte[] a = new byte[1024];
int len = -1;
while((len = in.read(a)) != -1){
out.write(a);
}
//将缓存写入目标文件
out.flush();
//先创建先释放,后创建后释放
out.close();
in.close();
}
}
}
学习:使用throw关键字抛出异常,既可以起到异常提示的作用,还可以起到中断程序的作用。