public class FileSystemItem
{
System.IO.FileSystemInfo _obj;
bool isFile=false;
internal FileSystemItem(System.IO.FileSystemInfo obj)
{
_obj = obj;
isFile = obj is System.IO.FileInfo;
}
public string Display
{
get
{
return string.Format("{0} - {1}", isFile ? "FILE" : "[DIR]", _obj.Name);
}
}
public FileSystemItem Data
{
get
{
return this;
}
}
public void Copy(string location)
{
if(!System.IO.Directory.Exists(location))
System.IO.Directory.CreateDirectory(location);
if (isFile)
{
if (System.IO.File.Exists(location + _obj.Name))
System.IO.File.Delete(location + _obj.Name);
System.IO.File.Copy( _obj.FullName, location + _obj.Name);
}
else
{
if (!System.IO.Directory.Exists(location + _obj.Name))
System.IO.Directory.CreateDirectory(location + _obj.Name);
System.IO.DirectoryInfo curr = _obj as System.IO.DirectoryInfo;
location+= _obj.Name + "\\";
foreach(System.IO.DirectoryInfo di in curr.GetDirectories())
{
FileSystemItem fi = new FileSystemItem(di);
fi.Copy(location);
}
foreach(System.IO.FileInfo fiCurr in curr.GetFiles())
{
FileSystemItem fi = new FileSystemItem(fiCurr);
fi.Copy(location);
}
}
}
}