60 lines
1.4 KiB
C#
60 lines
1.4 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|