<PackageReference Include="Relativity.Server.Transfer.SDK" Version="7.7.0" />

TempDirectory

public class TempDirectory : IDisposable
using System; using System.IO; namespace Relativity.Transfer { public class TempDirectory : IDisposable { private bool disposed; public bool ClearReadOnlyAttributes { get; set; } public bool DeleteDirectory { get; set; } public string Directory { get; set; } public TempDirectory() : this(GlobalSettings.Instance.TempDirectory) { } public TempDirectory(string parentDirectory) { if (string.IsNullOrEmpty(parentDirectory)) throw new ArgumentNullException("parentDirectory"); ClearReadOnlyAttributes = false; DeleteDirectory = true; Directory = Path.Combine(parentDirectory, "RelativityTmpDir_" + DateTime.Now.Ticks.ToString() + "_" + Guid.NewGuid().ToString()); } public void Create() { if (!System.IO.Directory.Exists(Directory)) System.IO.Directory.CreateDirectory(Directory); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } private void Dispose(bool disposing) { if (!disposed) { if (disposing) { if (DeleteDirectory && !string.IsNullOrEmpty(Directory) && System.IO.Directory.Exists(Directory)) ClearDirectory(); Directory = null; } disposed = true; } } private void ClearDirectory() { try { if (ClearReadOnlyAttributes) ClearAttributes(); System.IO.Directory.Delete(Directory, true); } catch (IOException) { } catch (UnauthorizedAccessException) { } } private void ClearAttributes() { string[] files = System.IO.Directory.GetFiles(Directory, "*", SearchOption.AllDirectories); foreach (string path in files) { FileAttributes attributes = File.GetAttributes(path); File.SetAttributes(path, attributes & ~FileAttributes.ReadOnly); } } public bool Exists() { return System.IO.Directory.Exists(Directory); } } }