diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-03-15 01:55:42 +0200 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-03-15 01:55:42 +0200 |
| commit | 96fe20a20e7c107473cefeda3b06950955952bec (patch) | |
| tree | 0c7efeb2a332eabdab4a551734eb94f4828aa381 /Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs | |
| parent | bb82e09c0080cacec65512805ac88f6b3416c3f2 (diff) | |
| download | Tango-96fe20a20e7c107473cefeda3b06950955952bec.tar.gz Tango-96fe20a20e7c107473cefeda3b06950955952bec.zip | |
Improved Console.
Increased SignalR adapter connect timeout.
Implemented Tango.FileSystem !!!
Diffstat (limited to 'Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs b/Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs new file mode 100644 index 000000000..9a051793d --- /dev/null +++ b/Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.FileSystem.Network; + +namespace Tango.FileSystem +{ + public class FileSystemManager + { + public FileSystemItemDTO GetRoot() + { + FileSystemItemDTO folder = new FileSystemItemDTO(); + folder.Path = "This PC"; + folder.IsRoot = true; + folder.Type = FileSystemItemType.Folder; + folder.Items = DriveInfo.GetDrives().Select(x => new FileSystemItemDTO() + { + Path = x.RootDirectory.FullName, + DriveType = x.DriveType, + DriveLabel = x.Name, + Type = FileSystemItemType.Drive, + }).Cast<FileSystemItemDTO>().ToList(); + + return folder; + } + + public FileSystemItemDTO GetFolder(String path) + { + List<FileSystemItemDTO> items = new List<FileSystemItemDTO>(); + + if (String.IsNullOrWhiteSpace(path)) + { + return GetRoot(); + } + + if (!Directory.Exists(path)) + { + throw new DirectoryNotFoundException("The specified directory could not be located."); + } + + foreach (var directory in Directory.GetDirectories(path)) + { + items.Add(new FileSystemItemDTO() + { + Path = directory, + Type = FileSystemItemType.Folder, + DateModified = Directory.GetLastWriteTimeUtc(directory), + }); + } + + foreach (var file in Directory.GetFiles(path)) + { + items.Add(new FileSystemItemDTO() + { + Path = file, + Type = FileSystemItemType.File, + DateModified = File.GetLastWriteTimeUtc(file), + Size = new FileInfo(file).Length + }); + } + + return new FileSystemItemDTO() + { + Path = path, + Type = path.Length == 3 ? FileSystemItemType.Drive : FileSystemItemType.Folder, + Items = items + }; + } + + public void Delete(String path) + { + if (Directory.Exists(path)) + { + Directory.Delete(path); + } + else if (File.Exists(path)) + { + File.Delete(path); + } + else + { + throw new FileNotFoundException("Could not locate the specified file or directory."); + } + } + } +} |
