public static string GetFileStatusText(string fullFileName, bool fileInaccessibleOrError = false, string fileErrorMessage = null, ExiftoolProcessStatus exiftoolProcessStatus = ExiftoolProcessStatus.DoNotUpdate, bool checkLockedStatus = false, int checkLockStatusTimeout = 100, bool showLockedByProcess = false) { FileStatus fileStatus = FileHandler.GetFileStatus(fullFileName, hasErrorOccured: fileInaccessibleOrError, errorMessage: fileErrorMessage, exiftoolProcessStatus: exiftoolProcessStatus, checkLockedStatus: checkLockedStatus, checkLockStatusTimeout: checkLockStatusTimeout); string fileStatusText = ConvertFileStatusToText(fileStatus, fullFileName); if (showLockedByProcess && fileStatus.HasAnyLocks) { fileStatusText += "\r\n" + GetLockedByText(fullFileName); } return(fileStatusText); }
public static FileStatus GetFileStatus(string fullFileName, bool hasErrorOccured = false, string errorMessage = null, ExiftoolProcessStatus exiftoolProcessStatus = ExiftoolProcessStatus.DoNotUpdate, bool checkLockedStatus = false, int checkLockStatusTimeout = 100) { FileStatus fileStatus = new FileStatus(); try { #region File - Exists, Dirty or has Error fileStatus.IsDirty = false; fileStatus.FileExists = File.Exists(fullFileName); FileInfo fileInfo = null; if (fileStatus.FileExists) { fileInfo = new FileInfo(fullFileName); } fileStatus.HasErrorOccured = hasErrorOccured; fileStatus.FileErrorMessage = errorMessage; #endregion #region File - Location on Device or in Cloud fileStatus.IsInCloud = fileStatus.FileExists && IsFileInCloud(fullFileName); fileStatus.IsVirtual = fileStatus.FileExists && IsFileVirtual(fullFileName); fileStatus.IsOffline = fileStatus.FileExists && (fileInfo == null ? false : (fileInfo.Attributes & FileAttributes.Offline) == FileAttributes.Offline); #endregion #region File - Locks and Access rights fileStatus.IsReadOnly = fileStatus.FileExists && (fileInfo == null ? false : (fileInfo.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly); fileStatus.IsFileLockedReadAndWrite = fileStatus.IsInCloudOrVirtualOrOffline || (!fileStatus.IsInCloudOrVirtualOrOffline && fileStatus.FileExists && checkLockedStatus && IsFileLockedForReadAndWriteCached(fullFileName, checkLockStatusTimeout)); fileStatus.IsFileLockedForRead = fileStatus.IsFileLockedReadAndWrite || fileStatus.IsInCloudOrVirtualOrOffline || (!fileStatus.IsInCloudOrVirtualOrOffline && fileStatus.FileExists && checkLockedStatus && IsFileLockedForRead(fullFileName, checkLockStatusTimeout)); #endregion #region Exiftool - Where in Processes if (exiftoolProcessStatus != ExiftoolProcessStatus.DoNotUpdate) { fileStatus.ExiftoolProcessStatus = exiftoolProcessStatus; } #endregion } catch (Exception ex) { #region File - Exists, Dirty or has Error fileStatus.IsDirty = false; fileStatus.FileExists = false; fileStatus.HasErrorOccured = true; fileStatus.FileErrorMessage = ex.Message; #endregion #region File - Location on Device or in Cloud fileStatus.IsInCloud = false; fileStatus.IsVirtual = false; fileStatus.IsOffline = false; #endregion #region File - Locks and Access rights fileStatus.IsReadOnly = true; fileStatus.IsFileLockedReadAndWrite = false; fileStatus.IsFileLockedForRead = false; #endregion #region Exiftool - Where in Processes fileStatus.ExiftoolProcessStatus = ExiftoolProcessStatus.FileInaccessibleOrError; #endregion } return(fileStatus); }