package question8;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/*
* 編寫程序,拷貝一個帶內容的文件夾。
* 例如:將c:\program files\java 文件夾拷貝到d盤根目錄。
*/
public class CopyFolder
{
public static void main(String[] args)
{
//只要不是錯誤目錄就行,文件夾結尾加不加
//斜槓都行,沒有區別
Copy("c:/program files/java", "D:/");
}
public static void Copy(String srcPath, String desPath)
{
File srcFile = new File(srcPath);
File desFile = new File(desPath);
//如果給定的源路徑是文件夾
if(srcFile.isDirectory())
{
//如果是文件夾的話,路徑需要增加一個斜槓,
//用File.getpath可以避免輸入的路徑有斜槓
//和沒有斜槓導致的一些問題
srcPath = srcFile.getPath()+File.separator;
desPath = desFile.getPath()+File.separator;
System.out.println(srcPath + " -> " + desPath);
//遍歷整個文件夾下的所有文件和子文件,
//並通過遞歸調用自己實現所有文件的複製
String[] fileList = srcFile.list();
for (String fileName : fileList)
{
Copy(srcPath+fileName, desPath+fileName);
}
}
//如果給定的源路徑是文件
else if(srcFile.isFile())
{
System.out.println(srcPath + " -> " + desPath);
CopyFile(srcPath, desPath);
}
//如果源路徑不合法
else
{
throw new IllegalArgumentException("源文件(夾)不存在");
}
}
public static void CopyFile(String srcPath, String desPath)
{
try
{
File srcFile = new File(srcPath);
File desFile = new File(desPath);
//僅當源文件爲文件時才複製,目錄無法創建流
//會拋出異常
if(srcFile.isFile())
{
//創建文件以及該路徑裏不存在的目錄
desFile.getParentFile().mkdirs();
if(!desFile.exists())
desFile.createNewFile();
//取得源文件與目標文件的流
FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(desFile);
//將源文件寫入目標文件
while(0 < fis.available())
{
fos.write(fis.read());
}
//關閉輸入輸出流
fis.close();
fos.close();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
拷貝文件夾及其所有內容,支持單個文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.