public void FinishTest()
 {
     if (_directoryWrap.Exists(path))
     {
         _directoryWrap.Delete(path, true);
     }
 }
示例#2
0
 private void DeleteTemporaryOutput(string jobTempFolder)
 {
     if (!string.IsNullOrEmpty(jobTempFolder) && Path.IsPathRooted(jobTempFolder) &&
         _directory.Exists(jobTempFolder))
     {
         try
         {
             _directory.Delete(jobTempFolder, true);
         }
         catch (IOException ex)
         {
             _logger.Warn("Error while deleting temporary folder: " + ex.Message);
         }
     }
 }
示例#3
0
    public static void DeleteEntireFolder(
        this IDirectory system,
        DirectoryPath path,
        bool disableReadOnly    = true,
        bool deleteFolderItself = true)
    {
        if (!system.Exists(path))
        {
            return;
        }
        string[] files      = system.GetFiles(path);
        var      exceptions = new List <Exception>();

        foreach (string f in files)
        {
            var fi = system.FileSystem.FileInfo.FromFileName(f);
            if (disableReadOnly)
            {
                if (fi.IsReadOnly)
                {
                    fi.IsReadOnly = false;
                }
            }
            try
            {
                fi.Delete();
            }
            catch (Exception ex)
            {
                exceptions.Add(ex);
            }
        }
        foreach (string subDir in system.GetDirectories(path))
        {
            system.DeleteEntireFolder(subDir, disableReadOnly);
        }
        if (deleteFolderItself)
        {
            if (system.GetFiles(path).Length == 0 &&
                system.GetDirectories(path).Length == 0)
            {
                try
                {
                    system.Delete(path);
                }
                catch (Exception ex)
                {
                    exceptions.Add(ex);
                }
            }
        }
        if (exceptions.Count == 1)
        {
            throw exceptions[0];
        }
        if (exceptions.Count > 1)
        {
            throw new AggregateException(exceptions);
        }
    }
示例#4
0
 private static void ParsePluginConfigs(IEnumerable <string> directories)
 {
     // todo use linq when diable plugin is implemented since parallel.foreach + list is not thread saft
     foreach (var directory in directories)
     {
         if (File.Exists(Path.Combine(directory, "NeedDelete.txt")))
         {
             try
             {
                 Directory.Delete(directory, true);
             }
             catch (Exception e)
             {
                 Log.Exception($"Can't delete <{directory}>", e, MethodBase.GetCurrentMethod().DeclaringType);
             }
         }
         else
         {
             PluginMetadata metadata = GetPluginMetadata(directory);
             if (metadata != null)
             {
                 PluginMetadatas.Add(metadata);
             }
         }
     }
 }
示例#5
0
        private void RecursiveDeleteEmptyDirectories(IDirectory dir, bool importfolder)
        {
            FileSystemResult fr = dir.Populate();

            if (fr.IsOk)
            {
                if (dir.Files.Count > 0)
                {
                    return;
                }
                foreach (IDirectory d in dir.Directories)
                {
                    RecursiveDeleteEmptyDirectories(d, false);
                }
            }
            if (importfolder)
            {
                return;
            }
            fr = dir.Populate();
            if (fr.IsOk)
            {
                if (dir.Files.Count == 0 && dir.Directories.Count == 0)
                {
                    fr = dir.Delete(true);
                    if (!fr.IsOk)
                    {
                        logger.Warn("Unable to DELETE directory: {0} error {1}", dir.FullName, fr?.Error ?? String.Empty);
                    }
                }
            }
        }
示例#6
0
        public static void DeleteWithTimeout(this IDirectory directory)
        {
            int retryCount = 0;

            while (retryCount++ < RetryCount)
            {
                try
                {
                    if (directory.Exists)
                    {
                        directory.Delete();
                    }
                    return;
                }
                catch (IOException ex)
                {
                    if (retryCount == RetryCount)
                    {
                        throw ex;
                    }
                    else
                    {
                        Thread.Sleep(RetryWaitInterval);
                    }
                }
            }
        }
示例#7
0
        /// <summary>
        ///     Deletes all parent directories that had to be created to reach the requested directory.
        ///     If a parent directory contains files, it will not be deleted, likewise further parent directories.
        /// </summary>
        /// <returns>false if deleting directory throws exception</returns>
        public bool DeleteCreatedDirectories()
        {
            _createdDirectories = CreatedDirectories.OrderByDescending(x => x).ToList(); //start with tallest
            foreach (var createdDirectory in _createdDirectories)
            {
                if (!_directoryWrap.Exists(createdDirectory))
                {
                    continue;
                }

                if (_directoryWrap.EnumerateFileSystemEntries(createdDirectory).Any())
                {
                    continue;
                }

                try
                {
                    _directoryWrap.Delete(createdDirectory);
                    _logger.Debug("Deleted previously created but unused directory " + createdDirectory);
                }
                catch (Exception ex)
                {
                    _logger.Warn("Exception while deleting created but unused directory \"" + createdDirectory + "\"\r\n" + ex.Message);
                    return(false);
                }
            }
            return(true);
        }
 public void DeleteDir()
 {
     if (!string.IsNullOrEmpty(_inputPath) && dirHelper.Exists(_inputPath))
     {
         dirHelper.Delete(_inputPath, true);
     }
 }
示例#9
0
        /// <summary>
        /// 清空发布文件
        /// </summary>

        protected void ClearReleaseDir(IBuildContext context)
        {
            IDirectory releaseDir = context.Disk.Directory(context.ReleasePath, PathTypes.Absolute);

            releaseDir.Delete();
            releaseDir.Create();
        }
 public void Cleanup()
 {
     if (_directoryWrapper == null)
     {
         _directoryWrapper = new DirectoryWrapper();
     }
     _directoryWrapper.Delete(EnvironmentVariables.DetailLogPath, true);
 }
示例#11
0
 static void ProcessDirectory(IDirectory Directory)
 {
     if (Directory.Empty)
     {
         System.Console.WriteLine("{0} is empty", Directory);
         Directory.Delete();
     }
 }
示例#12
0
        public void DeleteAllTests(Guid resourceId)
        {
            var dirPath = GetTestPathForResourceId(resourceId);

            if (_directoryWrapper.Exists(dirPath))
            {
                _directoryWrapper.Delete(dirPath, true);
                Tests.TryRemove(resourceId, out List <IServiceTestModelTO> removedTests);
            }
        }
示例#13
0
        public void DeleteAllCoverageReports(Guid resourceId)
        {
            var dirPath = GetTestCoveragePathForResourceId(resourceId);

            if (_directoryWrapper.Exists(dirPath))
            {
                _directoryWrapper.Delete(dirPath, true);
                TestCoverageReports.TryRemove(resourceId, out _);
            }
        }
示例#14
0
 void DeletePath(string path)
 {
     if (IsDirectory(path))
     {
         _directory.Delete(path, true);
     }
     else
     {
         _file.Delete(path);
     }
 }
 public static bool TryDelete(this IDirectory directory, string dirPath)
 {
     try
     {
         directory.Delete(dirPath);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
        public void GivenReadOnlyFileSystem_WhenRequestDirectory_ThenCannotDeleteDirectory()
        {
            IFileSystem roFileSystem = new ReadOnlyFileSystemDecorator(mockFileSystem.Object);

            Mock <IDirectory> mockDirectory = new Mock <IDirectory>();

            mockFileSystem.Setup(fs => fs.Directory("/")).Returns(mockDirectory.Object);

            IDirectory directory = roFileSystem.Directory("/");

            Assert.Throws <NotSupportedException>(() => directory.Delete());
        }
示例#17
0
        public void DirectoryRenameTest()
        {
            var        Manager    = new FileManager();
            IDirectory TempObject = Manager.Directory("~/Data/Test");

            TempObject.Create();
            string DirectoryPath = TempObject.Parent.FullName;

            TempObject.Rename("Test2");
            Assert.Equal(DirectoryPath + "\\Test2", TempObject.FullName);
            TempObject.Delete();
        }
示例#18
0
 public static bool TryDelete(this IDirectory directory, string dirPath)
 {
     Guard.Against.NullOrWhiteSpace(dirPath, nameof(dirPath));
     try
     {
         directory.Delete(dirPath);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
示例#19
0
        public void DirectoryMoveToTest()
        {
            var        Manager    = new FileManager();
            IDirectory TempObject = Manager.Directory("~/Data/Test");

            TempObject.Create();
            IDirectory NewParent = Manager.Directory("~/Data2/");

            NewParent.Create();
            TempObject.MoveTo(NewParent);
            Assert.Equal(NewParent.FullName + "Test", TempObject.FullName);
            TempObject.Delete();
        }
示例#20
0
        private static async Task MoveUsingStreams(IDirectory destination, IDirectory source, CancellationToken token)
        {
            destination.Create();
            foreach (var subDir in source.AllSubDirectories())
            {
                await MoveUsingStreams(destination.SubDirectory(subDir.Name), subDir, token);
            }

            foreach (var file in source.AllFiles())
            {
                await MoveUsingStreams(destination.File(file.Name), file, token, source.Attributes);
            }
            source.Delete();
        }
示例#21
0
 public void DeleteDir()
 {
     if (!string.IsNullOrEmpty(_inputPath) && dirHelper.Exists(_inputPath))
     {
         try
         {
             dirHelper.Delete(_inputPath, true);
         }
         catch (IOException e)
         {
             Console.WriteLine($"Error during cleanup {e.Message}");
         }
     }
 }
示例#22
0
 public static void DeleteDirectoryAndCheckForException(this IDirectory directory, string path)
 {
     try
     {
         if (directory.Exists(path))
         {
             directory.Delete(path, true);
         }
     }
     catch (Exception ex)
     {
         Log.Error($"Failed to delete baseline directory: {ex.Message}");
     }
 }
示例#23
0
        static void CollapseDirectory(IDirectory DestinationDirectory, IDirectory SubDir)
        {
            if (SubDir == DestinationDirectory)
            {
                return;
            }

            foreach (IFile File in SubDir.Files)
            {
                File.MoveTo(DestinationDirectory);
            }

            SubDir.Delete();
        }
        public IList <IExplorerItem> DeleteVersion(Guid resourceId, string versionNumber, string resourcePath)
        {
            var resource      = _catalogue.GetResource(Guid.Empty, resourceId);
            var versionFolder = GetVersionFolderPath(resource.ResourceID.ToString());
            var allVersions   = _directory.GetFiles(versionFolder);
            var version       = allVersions.FirstOrDefault(p => _filePath.GetFileName(p)
                                                           .StartsWith(versionNumber, StringComparison.Ordinal));

            _file.Delete(version);
            if (_directory.GetFiles(versionFolder).Length < 1)
            {
                _directory.Delete(versionFolder, true);
            }
            return(GetVersions(resourceId));
        }
        public void finds_directory(string directoryPath, string searchString)
        {
            IDirectory folder = null;

            try
            {
                folder = FileSystem.GetDirectory(directoryPath).MustExist();

                FileSystem.GetCurrentDirectory().Directories(searchString, SearchScope.CurrentOnly)
                .ShouldHaveCountOf(1)
                .First().Path.FullPath.ShouldBe(directoryPath);
            }
            finally
            {
                folder.Delete();
            }
        }
示例#26
0
 /// <summary>
 /// Deletes the output path and all files it contains.
 /// </summary>
 public void CleanOutputPath()
 {
     try
     {
         _logger.LogDebug($"Cleaning output directory: {FileSystem.OutputPath}...");
         IDirectory outputDirectory = FileSystem.GetOutputDirectory();
         if (outputDirectory.Exists)
         {
             outputDirectory.Delete(true);
         }
         _logger.LogInformation($"Cleaned output directory: {FileSystem.OutputPath}");
     }
     catch (Exception ex)
     {
         _logger.LogWarning("Error while cleaning output directory: {0} - {1}", ex.GetType(), ex.Message);
     }
 }
示例#27
0
 /// <summary>
 /// Deletes the temp path and all files it contains.
 /// </summary>
 public void CleanTempPath()
 {
     try
     {
         Trace.Information("Cleaning temp path: {0}", FileSystem.TempPath);
         IDirectory tempDirectory = FileSystem.GetTempDirectory();
         if (tempDirectory.Exists)
         {
             tempDirectory.Delete(true);
         }
         Trace.Information("Cleaned temp directory");
     }
     catch (Exception ex)
     {
         Trace.Warning("Error while cleaning temp path: {0} - {1}", ex.GetType(), ex.Message);
     }
 }
示例#28
0
 /// <summary>
 /// Deletes the output path and all files it contains.
 /// </summary>
 public void CleanOutputPath()
 {
     try
     {
         Trace.Information("Cleaning output path: {0}", FileSystem.OutputPath);
         IDirectory outputDirectory = FileSystem.GetOutputDirectory();
         if (outputDirectory.Exists)
         {
             outputDirectory.Delete(true);
         }
         Trace.Information("Cleaned output directory");
     }
     catch (Exception ex)
     {
         Trace.Warning("Error while cleaning output path: {0} - {1}", ex.GetType(), ex.Message);
     }
 }
示例#29
0
        /// <summary>
        ///     Create unique job folder in spool folder and copy ps file to it.
        ///     Create inf file from ps file.
        /// </summary>
        /// <returns>inf file in spool folder</returns>
        public string TransformToInfFileWithMerge(IList <string> directConversionFiles, AppStartParameters appStartParameters)
        {
            if (directConversionFiles.Count <= 0)
            {
                return("");
            }

            foreach (var file in directConversionFiles)
            {
                if (string.IsNullOrWhiteSpace(file))
                {
                    return("");
                }

                if (!_file.Exists(file))
                {
                    Logger.Error("The file \"" + file + "\" does not exist.");
                    return("");
                }
            }

            string jobFolder;

            try
            {
                jobFolder = CreateJobFolderInSpool(directConversionFiles[0]);
            }
            catch (Exception ex)
            {
                Logger.Error("Error while creating spool directory for ps-job:\r\n" + ex.Message);
                return("");
            }

            try
            {
                var jobFolderFile = CopyFilesToJobFolder(jobFolder, directConversionFiles);
                return(CreateInfFile(jobFolderFile, jobFolder, appStartParameters));
            }
            catch (Exception ex)
            {
                Logger.Error("Error while coping ps-file in spool folder:\r\n" + ex.Message);
                _directory.Delete(jobFolder, true); //Delete created folder and files
                return("");
            }
        }
示例#30
0
 /// <summary>
 /// Deletes the temp path and all files it contains.
 /// </summary>
 public void CleanTempPath()
 {
     try
     {
         _logger.LogDebug($"Cleaning temp directory: {FileSystem.TempPath}...");
         IDirectory tempDirectory = FileSystem.GetTempDirectory();
         if (tempDirectory.Exists)
         {
             tempDirectory.Delete(true);
         }
         tempDirectory.Create();
         _logger.LogInformation($"Cleaned temp directory: {FileSystem.TempPath}");
     }
     catch (Exception ex)
     {
         _logger.LogWarning("Error while cleaning temp directory: {0} - {1}", ex.GetType(), ex.Message);
     }
 }
        public override void DeleteBinding()
        {
            //TODO: we are assuming the files are not under source control
            string configFile = this.GetFullConfigurationFilePath();

            if (!fileWrapper.Exists(configFile))
            {
                Debug.Fail($"Nothing to delete - binding file does not exist: {configFile}");
                return;
            }

            SafePerformFileSystemOperation(() =>
            {
                fileWrapper.Delete(configFile);
                string sonarLintDir = Path.GetDirectoryName(configFile);
                directoryWrapper.Delete(sonarLintDir);
            });
        }
示例#32
0
        public void DirectoryTest()
        {
            var        Manager    = new FileManager();
            IDirectory TempObject = Manager.Directory("~/Data/Test");

            Assert.Equal(false, TempObject.Exists);
            Assert.Equal("Test", TempObject.Name);
            Assert.Equal("Data", TempObject.Parent.Name);
            Assert.Equal(0, TempObject.Size);
            TempObject.Create();
            Assert.Equal(true, TempObject.Exists);
            Assert.Equal("Test", TempObject.Name);
            Assert.Equal("Data", TempObject.Parent.Name);
            TempObject.Delete();
            Assert.Equal(false, TempObject.Exists);
            Assert.Equal("Test", TempObject.Name);
            Assert.Equal("Data", TempObject.Parent.Name);
        }
 private void RecursiveDeleteEmptyDirectories(IDirectory dir, bool importfolder)
 {
     FileSystemResult fr = dir.Populate();
     if (fr.IsOk)
     {
         if (dir.Files.Count > 0)
             return;
         foreach (IDirectory d in dir.Directories)
             RecursiveDeleteEmptyDirectories(d,false);
     }
     if (importfolder)
         return;
     fr = dir.Populate();
     if (fr.IsOk)
     {
         if (dir.Files.Count == 0 && dir.Directories.Count == 0)
         {
             fr = dir.Delete(true);
             if (!fr.IsOk)
             {
                 logger.Warn("Unable to DELETE directory: {0} error {1}", dir.FullName, fr?.Error ?? String.Empty);
             }
         }
     }
 }
示例#34
0
        public void Directory(IDirectory sdir, IDirectory ddir)
        {
            if (ddir == null || sdir == null) return;

            sdir.Source = ddir.Source = sdir;
            sdir.Destination = ddir.Destination = ddir;

            int con;

            if (sdir is LocalDirectory && ddir is LocalDirectory) con = 1;
            else {
                con = Math.Max(FtpConnections.Count(true, sdir.Url), FtpConnections.Count(false, ddir.Url));
                if (ddir is FtpDirectory) {
                    ((FtpDirectory)ddir).TransferProgress = true;
                } else if (sdir is FtpDirectory) {
                    ((FtpDirectory)sdir).TransferProgress = true;
                }
            }
            if (con == 0) con = 1;
            var list = sdir.List().Where(file => !Silversite.Services.Paths.Match(ExcludePatterns, file.RelativePath)).ToList();
            var dlist = ddir.List();
            //ddir.CreateDirectory(null);

            Parallel.ForEach<FileOrDirectory>(list, new ParallelOptions { MaxDegreeOfParallelism = con },
                (src) => {
                    FileOrDirectory dest = null;
                    lock(dlist) { if (dlist.Contains(src.Name)) dest = dlist[src.Name]; }
                    if (dest != null && dest.Class != src.Class && (src.Changed > dest.Changed || Mode == Silversite.Services.Sync.Mode.Clone)) {
                        ddir.Delete(dest);
                        dest = null;
                    }
                    if (src.Class == ObjectClass.File) { // src is a file
                        if (dest == null
                            || ((Mode == Silversite.Services.Sync.Mode.Update || Mode == Silversite.Services.Sync.Mode.Add) && src.Changed > dest.Changed)
                            || (Mode == Silversite.Services.Sync.Mode.Clone && (src.Changed > dest.Changed + dt))) {
                            var s = sdir.ReadFile(src);
                            if (s != null) {
                                using (s) {
                                    ddir.WriteFile(s, src);
                                }
                            }
                        }
                    } else { // src is a directory
                        if (dest == null) Directory((IDirectory)src, ddir.CreateDirectory(src));
                        else Directory((IDirectory)src, (IDirectory)dest);
                    }
                    lock (dlist) { dlist.Remove(src.Name); }
                });
            if (Mode != Silversite.Services.Sync.Mode.Add) {
                foreach (var dest in dlist) ddir.Delete(dest);
            }
        }