aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-15 01:55:42 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-03-15 01:55:42 +0200
commit96fe20a20e7c107473cefeda3b06950955952bec (patch)
tree0c7efeb2a332eabdab4a551734eb94f4828aa381 /Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs
parentbb82e09c0080cacec65512805ac88f6b3416c3f2 (diff)
downloadTango-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.cs89
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.");
+ }
+ }
+ }
+}