/// <summary> /// Determines if a file is locked using <see cref="T:ByteDev.Io.Locking.FileLocker" />. /// </summary> /// <param name="fileInfo">File to check.</param> /// <returns>True if the file is locked; otherwise false.</returns> /// <exception cref="T:System.ArgumentNullException"><paramref name="fileInfo" /> is null.</exception> /// <exception cref="T:System.IO.FileNotFoundException">File does not exist.</exception> public static bool IsLocked(FileInfo fileInfo) { if (fileInfo == null) { throw new ArgumentNullException(nameof(fileInfo)); } ThrowIfNotExists(fileInfo); var fileLockInfo = new FileLockInfo(fileInfo); return(fileLockInfo.LockFile.Exists); }
/// <summary> /// Unlocks a file. This method will delete a corresponding .lock file if it exists. /// </summary> /// <param name="fileInfo">File to unlock.</param> /// <exception cref="T:System.ArgumentNullException"><paramref name="fileInfo" /> is null.</exception> /// <exception cref="T:System.IO.FileNotFoundException">File does not exist.</exception> public static void Unlock(FileInfo fileInfo) { if (fileInfo == null) { throw new ArgumentNullException(nameof(fileInfo)); } ThrowIfNotExists(fileInfo); var fileLockInfo = new FileLockInfo(fileInfo); fileLockInfo.LockFile.DeleteIfExists(); }
/// <summary> /// Locks a file. This method will create a corresponding .lock file if it does not exist. /// </summary> /// <param name="fileInfo">File to lock.</param> /// <returns>File lock info.</returns> /// <exception cref="T:System.ArgumentNullException"><paramref name="fileInfo" /> is null.</exception> /// <exception cref="T:System.IO.FileNotFoundException">File does not exist.</exception> /// <exception cref="T:System.InvalidOperationException">Lock file cannot be created as it already exists.</exception> public static FileLockInfo Lock(FileInfo fileInfo) { if (fileInfo == null) { throw new ArgumentNullException(nameof(fileInfo)); } ThrowIfNotExists(fileInfo); var fileLockInfo = new FileLockInfo(fileInfo); if (fileLockInfo.LockFile.Exists) { throw new InvalidOperationException($"Lock file: '{fileLockInfo.LockFile.FullName}' cannot be created as it already exists."); } CreateLockFile(fileLockInfo.LockFile.FullName); return(fileLockInfo); }