diff options
Diffstat (limited to 'Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs | 261 |
1 files changed, 0 insertions, 261 deletions
diff --git a/Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs b/Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs deleted file mode 100644 index dc8efa7dd..000000000 --- a/Software/Visual_Studio/Tango.FileSystem/FileSystemManager.cs +++ /dev/null @@ -1,261 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using Tango.Core.Helpers; -using Tango.FileSystem.Network; -using Tango.Logging; - -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().Where(x => x.DriveType == DriveType.Fixed || x.DriveType == DriveType.Removable || x.DriveType == DriveType.Network).Select(x => new FileSystemItemDTO() - { - Path = x.RootDirectory.FullName, - DriveType = x.DriveType, - DriveLabel = $"{x.VolumeLabel} ({x.Name.Replace("\\", "")})", - Type = FileSystemItemType.Drive, - }).Cast<FileSystemItemDTO>().ToList(); - - return folder; - } - - public FileSystemItemDTO GetFolder(GetFileSystemItemRequest request) - { - List<FileSystemItemDTO> items = new List<FileSystemItemDTO>(); - - if (request.SpecialFolder.HasValue) - { - request.Path = Environment.GetFolderPath(request.SpecialFolder.Value); - } - - if (String.IsNullOrWhiteSpace(request.Path)) - { - return GetRoot(); - } - - try - { - if (request.Path.Count(x => x == '%') == 2) - { - var variable = Regex.Match(request.Path, "(?<=%)(.*?)(?=%)").Value; - request.Path = request.Path.Replace($"%{variable}%", Environment.ExpandEnvironmentVariables($"%{variable}%")); - } - } - catch - { - throw new ArgumentException("Could not parse environment variable."); - } - - request.Path = Path.GetFullPath(request.Path); - - if (!Directory.Exists(request.Path)) - { - throw new DirectoryNotFoundException("The specified directory could not be located."); - } - - foreach (var directory in Directory.GetDirectories(request.Path)) - { - items.Add(new FileSystemItemDTO() - { - Path = directory, - Type = FileSystemItemType.Folder, - DateModified = Directory.GetLastWriteTimeUtc(directory), - DateCreated = Directory.GetCreationTimeUtc(directory), - }); - } - - if (!request.FoldersOnly) - { - foreach (var file in Directory.GetFiles(request.Path, request.Filter != null ? request.Filter : "*.*")) - { - items.Add(new FileSystemItemDTO() - { - Path = file, - Type = FileSystemItemType.File, - DateModified = File.GetLastWriteTimeUtc(file), - DateCreated = File.GetCreationTimeUtc(file), - Size = new FileInfo(file).Length - }); - } - } - - return new FileSystemItemDTO() - { - Path = request.Path, - Type = request.Path.Length == 3 ? FileSystemItemType.Drive : FileSystemItemType.Folder, - Items = items - }; - } - - public Task<FileSystemItem> GetFolder(String path, bool foldersOnly = false, String filter = "*.*") - { - return Task.Factory.StartNew<FileSystemItem>(() => - { - return FileSystemItem.FromDTO(GetFolder(new GetFileSystemItemRequest() - { - Path = path, - FoldersOnly = foldersOnly, - Filter = filter, - })); - }); - } - - public Task<FileSystemItem> GetFolder(Environment.SpecialFolder specialFolder, bool foldersOnly = false, String filter = "*.*") - { - return Task.Factory.StartNew<FileSystemItem>(() => - { - return FileSystemItem.FromDTO(GetFolder(new GetFileSystemItemRequest() - { - SpecialFolder = specialFolder, - FoldersOnly = foldersOnly, - Filter = filter, - })); - }); - } - - public void Delete(String path) - { - if (Directory.Exists(path)) - { - Directory.Delete(path, true); - } - else if (File.Exists(path)) - { - File.Delete(path); - } - else - { - throw new FileNotFoundException("Could not locate the specified file or directory."); - } - } - - public void Move(MoveRequest request) - { - if (Directory.Exists(request.Destination)) - { - throw new IOException($"'{Path.GetFileName(request.Destination)}' already exists on the target folder."); - } - - if (File.Exists(request.Source)) - { - File.Move(request.Source, request.Destination); - } - else if (Directory.Exists(request.Source)) - { - Directory.Move(request.Source, request.Destination); - } - else - { - throw new FileNotFoundException("Could not locate the source file or folder."); - } - } - - public void Copy(CopyRequest request) - { - if (File.Exists(request.Source)) - { - if (request.Source == request.Destination) - { - while (File.Exists(request.Destination)) - { - request.Destination = Path.Combine(Path.GetDirectoryName(request.Destination), Path.GetFileNameWithoutExtension(request.Destination)) + " copy" + Path.GetExtension(request.Destination); - } - } - File.Copy(request.Source, request.Destination, true); - } - else if (Directory.Exists(request.Source)) - { - Directory.CreateDirectory(Path.GetDirectoryName(request.Destination)); - PathHelper.CopyDirectory(request.Source, request.Destination, true); - } - else - { - throw new FileNotFoundException("Could not locate the source file or folder."); - } - } - - public FileSystemItemDTO CreateFolder(String path, String folderName) - { - String fullPath = Path.Combine(path, folderName); - - if (Directory.Exists(fullPath)) - { - throw new IOException("The specified directory name already exists."); - } - - Directory.CreateDirectory(fullPath); - - return GetFolder(new GetFileSystemItemRequest() - { - Path = fullPath - }); - } - - public long PerformDiskSpaceOptimization() - { - var tempDir = Path.GetTempPath(); - var logsFolder = FileLogger.DefaultLogsFolder; - - long sizeBefore = GetDirectorySize(new DirectoryInfo(tempDir)) + GetDirectorySize(new DirectoryInfo(logsFolder)); - - foreach (var file in Directory.GetFiles(tempDir, "*.*", SearchOption.AllDirectories)) - { - try - { - FileInfo fileInfo = new FileInfo(file); - if (fileInfo.LastWriteTime < DateTime.Now.AddDays(-1)) - { - File.Delete(file); - } - } - catch { } - } - - foreach (var file in Directory.GetFiles(logsFolder, "*.*", SearchOption.AllDirectories)) - { - try - { - FileInfo fileInfo = new FileInfo(file); - if (fileInfo.LastWriteTime < DateTime.Now.AddDays(-2)) - { - File.Delete(file); - } - } - catch { } - } - - long sizeAfter = GetDirectorySize(new DirectoryInfo(tempDir)) + GetDirectorySize(new DirectoryInfo(logsFolder)); - - return Math.Max(sizeBefore - sizeAfter, 0); - } - - public static long GetDirectorySize(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 += GetDirectorySize(di); - } - return size; - } - } -} |
