BITKit/Packages/Core/StorageProvider/FolderProvider.cs

64 lines
1.5 KiB
C#

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BITKit.IO
{
public class FolderProvider : IStorageFolder
{
readonly DirectoryInfo directoryInfo;
public FolderProvider(DirectoryInfo directoryInfo)
{
this.directoryInfo = directoryInfo;
}
public FolderProvider(string path)
{
this.directoryInfo=new DirectoryInfo(path);
}
public DateTime GetLastUpdated()
{
return directoryInfo.LastWriteTime;
}
public string GetName()
{
return directoryInfo.Name;
}
public IStorageFolder GetParent()
{
return new FolderProvider(directoryInfo.Parent);
}
public string GetPath()
{
return directoryInfo.FullName;
}
public long GetSize()
{
return DirSize(directoryInfo);
}
long DirSize(DirectoryInfo d)
{
long size = 0;
// Add file sizes.
FileInfo[] fis = d.GetFiles();
foreach (FileInfo fi in fis)
{
size += fi.Length;
}
// Add subdirectory sizes.
DirectoryInfo[] dis = d.GetDirectories();
foreach (DirectoryInfo di in dis)
{
size += DirSize(di);
}
return size;
}
}
}