利用java实现这一功能其实非常简单,我们只需要了解File文件和IO流的一些基本操作就可以了。
让我们先介绍一个实现这个复制操作可以用到File内的方法,
IO流的基本操作:
下面是代码实现:
public static void main(String[] args) throws IOException {
File file = new File("F:\\测试文件夹"); //要被复制的目录文件
String string1 = "F:\\测试文件夹";
String string2 = "F:\\结果文件"; //复制到的指定文件
copy(file,string1,string2);
}
以上是将被复制文件、被复制文件的路径、复制到指定路径。
下面代码实现复制操作
public static void copy(File file,String string1,String string2) throws IOException {
if (file.isDirectory()){ //判断是否为目录
File f = new File(string2);
f.mkdirs(); //在指定目录下生成目录
}
else { //不是目录的情况下进行文件复制操作
FileInputStream fis = null;
BufferedInputStream bis = null;
FileOutputStream fos= null;
BufferedOutputStream bos = null;
//以上是对数据流的初始化操作
fis= new FileInputStream(string1);
bis = new BufferedInputStream(fis);
//要被复制的文本
fos = new FileOutputStream(string2);
bos = new BufferedOutputStream(fos);
//复制文本
char[] chars = new char[1024];
//开辟数组空间,一次操作只能存1K的数据
int count; //记录每次存储的数据数
while ((count = bis.read()) != -1){
for (int i = 0; i < count; i++) {
bos.write(chars[i]);
}
}
bos.flush();
bos.close();
bis.close();
//关闭数据流
return; //返回此层目录
}
File[] files = file.listFiles();//将被复制的文件目录存储到File数组中
if (files.length == 0){ //空目录返回
return;
}
else {
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) { //判断是否为目录
String name = files[i].getName();//获得此目录的名字
String string3 = files[i].getPath();//获得此目录路径
String string4 = string2 + "\\" + name;//复制到指定目录的下一级目录名以及路径
copy(files[i], string3, string4);//调用递归,将此次的文件目录以及此次文件的路径和被复制到指定目录的路径传入
} else {//不是目录的情况下进行文件复制操作
String string3 = files[i].getPath(); ////获得此文件路径
String string4 = string2 + "\\" + files[i].getName();//文件被复制到的指定路径
copy(files[i], string3, string4);//将文件传入递归
}
}
}
}
本文介绍了如何使用Java的File和IO流轻松复制一个目录到另一个指定位置,包括涉及的关键方法和基本IO操作。

1万+

被折叠的 条评论
为什么被折叠?



