public static void EnsureDirectoryExists(DirectoryInfo directory, string filename, bool warnIfDirectoryExists, bool dirDeleteOnStart, int versionFieldOffset, int timestampFieldOffset, long timeoutMs, IEpochClock epochClock, Action <int> versionCheck, Action <string> logger) { FileInfo cncFile = new FileInfo(Path.Combine(directory.FullName, filename)); if (directory.Exists) { if (warnIfDirectoryExists && null != logger) { logger("WARNING: " + directory + " already exists."); } if (!dirDeleteOnStart) { int offset = Math.Min(versionFieldOffset, timestampFieldOffset); int length = Math.Max(versionFieldOffset, timestampFieldOffset) + BitUtil.SIZE_OF_LONG - offset; MappedByteBuffer cncByteBuffer = MapExistingFile(cncFile, logger, offset, length); try { if (IsActive(cncByteBuffer, epochClock, timeoutMs, versionFieldOffset, timestampFieldOffset, versionCheck, logger)) { throw new System.InvalidOperationException("Active CnC file detected"); } } finally { IoUtil.Unmap(cncByteBuffer); } } IoUtil.Delete(directory, false); } IoUtil.EnsureDirectoryExists(directory, directory.ToString()); }
public virtual void DeleteDirectory(bool ignoreFailures) { IoUtil.Delete(parentDir, ignoreFailures); }