主要的實現方法是用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!");
}
}
}
//