文件夹的复制和文件的遍历主要原理是:先遍历源文件夹里面的所有文件和文件夹,并保存到一个文件路径数组中,然后循环这个数组,如果是文件就用FileInputStream和FileOutputStream类来实现复制功能,如果是文件夹,则用递归方法递归遍历里面的文件和文件夹,
主要的实现方法是用File类的API来遍历要操作文件和文件夹,
具体怎么用,我写了一个小测试代码级大家看吧,我再在代码里面写一点注释,告诉大家怎么用就好了
代码如下:
主要的实现方法是用File类的API来遍历要操作文件和文件夹,
具体怎么用,我写了一个小测试代码级大家看吧,我再在代码里面写一点注释,告诉大家怎么用就好了
代码如下:
//
import java.io.*;
class FileMove
{
public static void main(String[] args)
{
try{
//传入两个文件夹路径,其中在Windows中使用的分隔符是"\\"
CopyFile("D:\\5555","D:\\1234");
}
catch(Exception ex){}
System.out.println("Copy File is over!");
}
//复制文件夹的方法,开始的时候是两个文件夹
public static void CopyFile(String source,String destin) throws Exception //在这里直接抛出各种异常,就不一一处理了
{
File path1=new File(source);
File path2=new File(destin);
//如果源目录不存在,那就不用复制了,
if(path1.exists())
{
//Create destination folder,如果目标目录不存在,就创建目标目录,因为没有目录文件复制不过去的
if(!path2.exists())
{
path2.mkdirs();
}
//取得源目录下面的所有文件和文件夹
File[] items=path1.listFiles();
FileInputStream fis=null;
FileOutputStream fos=null;
//取得所有文件和文件夹之后,遍历处理,如果是文件,就复制文件,如果是文件夹,则递归文件夹下面的文件和文件夹
for(File item:items)
{
//如果是文件才进行复制
if(item.isFile())
{
//输入输出流的两个常用构造函数,其中在用来了一个字段File.separator,先用输入流读取文件,然后用输出流写文件到目标位置,完成复制功能
fis=new FileInputStream(item);
fos=new FileOutputStream(path2+File.separator+item.getName());
byte[] b=new byte[1024];
for(int i=0;(i=fis.read(b))!=-1;)
{
fos.write(b,0,i);
fos.flush();
}
//close the Stream关闭资源啊,什么异常处理的就不写,自己补上吧
fos.close();
fis.close();
}
//如果是文件夹,递归文件夹
else
{
CopyFile(item.getPath(),path2+File.separator+item.getName());
}
}
}
else
{
System.out.println("source path:"+source+" is not exists!");
}
}
}
//