[英]C# Copy file or folder
我正在嘗試編寫一個程序以使多個文件夾保持同步。 為此,我需要復制和刪除文件和子文件夾。
對我來說,對象是文件還是文件夾都沒有關系,我想創建所有必需的父文件夾並復制對象,並在必要時覆蓋。 我當前正在使用交錯的FileSystemInfo數組來保存我的文件/文件夾。
這具有避免重復代碼以分別同步文件和文件夾的優點。
但是,我不知道如何復制FileSystemInfo。 我正在尋找一種能夠復制/刪除/讀取創建內容或修改時間的方法,該方法適用於文件和文件夾。
FileSystemInfo沒有Copy或Delete方法,但它是DirectoryInfo和FileInfo的基類。
因此,當您遍歷FileSystemInfo對象時,必須將其強制轉換為適當的具體類,並使用特定的復制/刪除方法。
foreach( var fsi in fileSystemInfoObjects )
{
if( fsi is DirectoryInfo )
{
var directory = (DirectoryInfo)fsi;
//do something
}
else if (fsi is FileInfo )
{
var file = (FileInfo)fsi;
//do something
}
}
我用山姆的答案來幫助我解決問題。 我所做的就是將復制邏輯放在我的自定義類中,這樣我在代碼中使用它時就不必復制該邏輯。
public class myFSInfo
{
public FileSystemInfo Dir;
public string RelativePath;
public string BaseDirectory;
public myFSInfo(FileSystemInfo dir, string basedir)
{
Dir = dir;
BaseDirectory = basedir;
RelativePath = Dir.FullName.Substring(basedir.Length + (basedir.Last() == '\\' ? 1 : 2));
}
private myFSInfo() { }
/// <summary>
/// Copies a FileInfo or DirectoryInfo object to the specified path, creating folders and overwriting if necessary.
/// </summary>
/// <param name="path"></param>
public void CopyTo(string path)
{
if (Dir is FileInfo)
{
var f = (FileInfo)Dir;
Directory.CreateDirectory(path.Substring(0,path.LastIndexOf("\\")));
f.CopyTo(path,true);
}
else if (Dir is DirectoryInfo) Directory.CreateDirectory(path);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.