示例#1
0
        public static FileAttributes AzureFileNtfsAttributesToLocalAttributes(NtfsFileAttributes cloudFileNtfsAttributes)
        {
            FileAttributes fileAttributes = FileAttributes.Normal;

            if ((cloudFileNtfsAttributes & NtfsFileAttributes.ReadOnly) == NtfsFileAttributes.ReadOnly)
            {
                fileAttributes |= FileAttributes.ReadOnly;
            }

            if ((cloudFileNtfsAttributes & NtfsFileAttributes.Hidden) == NtfsFileAttributes.Hidden)
            {
                fileAttributes |= FileAttributes.Hidden;
            }

            if ((cloudFileNtfsAttributes & NtfsFileAttributes.System) == NtfsFileAttributes.System)
            {
                fileAttributes |= FileAttributes.System;
            }

            if ((cloudFileNtfsAttributes & NtfsFileAttributes.Directory) == NtfsFileAttributes.Directory)
            {
                fileAttributes |= FileAttributes.Directory;
            }

            if ((cloudFileNtfsAttributes & NtfsFileAttributes.Archive) == NtfsFileAttributes.Archive)
            {
                fileAttributes |= FileAttributes.Archive;
            }

            if ((cloudFileNtfsAttributes & NtfsFileAttributes.Temporary) == NtfsFileAttributes.Temporary)
            {
                fileAttributes |= FileAttributes.Temporary;
            }

            if ((cloudFileNtfsAttributes & NtfsFileAttributes.Offline) == NtfsFileAttributes.Offline)
            {
                fileAttributes |= FileAttributes.Offline;
            }

            if ((cloudFileNtfsAttributes & NtfsFileAttributes.NotContentIndexed) == NtfsFileAttributes.NotContentIndexed)
            {
                fileAttributes |= FileAttributes.NotContentIndexed;
            }

            if ((cloudFileNtfsAttributes & NtfsFileAttributes.NoScrubData) == NtfsFileAttributes.NoScrubData)
            {
                fileAttributes |= FileAttributes.NoScrubData;
            }

            if ((cloudFileNtfsAttributes & NtfsFileAttributes.None) == NtfsFileAttributes.None)
            {
                if (fileAttributes != FileAttributes.Normal)
                {
                    fileAttributes = fileAttributes & (~FileAttributes.Normal);
                }
            }

            return(fileAttributes);
        }
        /// <summary>
        /// ToString
        /// </summary>
        /// <returns>string</returns>
        public static string ToAttributesString(this NtfsFileAttributes attributes)
        {
            var stringBuilder = new StringBuilder();

            if ((attributes & NtfsFileAttributes.ReadOnly) == NtfsFileAttributes.ReadOnly)
            {
                AppendAttribute(nameof(NtfsFileAttributes.ReadOnly), stringBuilder);
            }
            if ((attributes & NtfsFileAttributes.Hidden) == NtfsFileAttributes.Hidden)
            {
                AppendAttribute(nameof(NtfsFileAttributes.Hidden), stringBuilder);
            }
            if ((attributes & NtfsFileAttributes.System) == NtfsFileAttributes.System)
            {
                AppendAttribute(nameof(NtfsFileAttributes.System), stringBuilder);
            }
            if ((attributes & NtfsFileAttributes.None) == NtfsFileAttributes.None)
            {
                AppendAttribute(nameof(NtfsFileAttributes.None), stringBuilder);
            }
            if ((attributes & NtfsFileAttributes.Directory) == NtfsFileAttributes.Directory)
            {
                AppendAttribute(nameof(NtfsFileAttributes.Directory), stringBuilder);
            }
            if ((attributes & NtfsFileAttributes.Archive) == NtfsFileAttributes.Archive)
            {
                AppendAttribute(nameof(NtfsFileAttributes.Archive), stringBuilder);
            }
            if ((attributes & NtfsFileAttributes.Temporary) == NtfsFileAttributes.Temporary)
            {
                AppendAttribute(nameof(NtfsFileAttributes.Temporary), stringBuilder);
            }
            if ((attributes & NtfsFileAttributes.Offline) == NtfsFileAttributes.Offline)
            {
                AppendAttribute(nameof(NtfsFileAttributes.Offline), stringBuilder);
            }
            if ((attributes & NtfsFileAttributes.NotContentIndexed) == NtfsFileAttributes.NotContentIndexed)
            {
                AppendAttribute(nameof(NtfsFileAttributes.NotContentIndexed), stringBuilder);
            }
            if ((attributes & NtfsFileAttributes.NoScrubData) == NtfsFileAttributes.NoScrubData)
            {
                AppendAttribute(nameof(NtfsFileAttributes.NoScrubData), stringBuilder);
            }
            if (stringBuilder[stringBuilder.Length - 1] == '|')
            {
                stringBuilder.Remove(stringBuilder.Length - 1, 1);
            }
            return(stringBuilder.ToString());
        }
示例#3
0
        public static NtfsFileAttributes LocalAttributesToAzureFileNtfsAttributes(FileAttributes fileAttributes)
        {
            NtfsFileAttributes cloudFileNtfsAttributes = NtfsFileAttributes.None;

            if ((fileAttributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
            {
                cloudFileNtfsAttributes |= NtfsFileAttributes.ReadOnly;
            }

            if ((fileAttributes & FileAttributes.Hidden) == FileAttributes.Hidden)
            {
                cloudFileNtfsAttributes |= NtfsFileAttributes.Hidden;
            }

            if ((fileAttributes & FileAttributes.System) == FileAttributes.System)
            {
                cloudFileNtfsAttributes |= NtfsFileAttributes.System;
            }

            if ((fileAttributes & FileAttributes.Directory) == FileAttributes.Directory)
            {
                cloudFileNtfsAttributes |= NtfsFileAttributes.Directory;
            }

            if ((fileAttributes & FileAttributes.Archive) == FileAttributes.Archive)
            {
                cloudFileNtfsAttributes |= NtfsFileAttributes.Archive;
            }

            if ((fileAttributes & FileAttributes.Normal) == FileAttributes.Normal)
            {
                cloudFileNtfsAttributes |= NtfsFileAttributes.None;
            }

            if ((fileAttributes & FileAttributes.Temporary) == FileAttributes.Temporary)
            {
                cloudFileNtfsAttributes |= NtfsFileAttributes.Temporary;
            }

            if ((fileAttributes & FileAttributes.Offline) == FileAttributes.Offline)
            {
                cloudFileNtfsAttributes |= NtfsFileAttributes.Offline;
            }

            if ((fileAttributes & FileAttributes.NotContentIndexed) == FileAttributes.NotContentIndexed)
            {
                cloudFileNtfsAttributes |= NtfsFileAttributes.NotContentIndexed;
            }

            if ((fileAttributes & FileAttributes.NoScrubData) == FileAttributes.NoScrubData)
            {
                cloudFileNtfsAttributes |= NtfsFileAttributes.NoScrubData;
            }

            if (cloudFileNtfsAttributes != NtfsFileAttributes.None)
            {
                cloudFileNtfsAttributes &= (~NtfsFileAttributes.None);
            }

            return(cloudFileNtfsAttributes);
        }
        /// <summary>
        /// Parses a NTFS attributes string to a nullable FileNtfsAttributes.
        /// </summary>
        /// <param name="attributesString">string to parse</param>
        /// <returns></returns>
        public static NtfsFileAttributes?ToFileAttributes(string attributesString)
        {
            if (attributesString == null)
            {
                return(null);
            }
            var splitString = attributesString.Split('|');

            if (splitString.Length == 0)
            {
                throw Errors.InvalidArgument(attributesString);
            }

            NtfsFileAttributes attributes = default;

            foreach (var s in splitString)
            {
                var trimmed = s.Trim();

                if (trimmed.Equals(nameof(NtfsFileAttributes.ReadOnly), StringComparison.InvariantCultureIgnoreCase))
                {
                    attributes |= NtfsFileAttributes.ReadOnly;
                }
                else if (trimmed.Equals(nameof(NtfsFileAttributes.Hidden), StringComparison.InvariantCultureIgnoreCase))
                {
                    attributes |= NtfsFileAttributes.Hidden;
                }
                else if (trimmed.Equals(nameof(NtfsFileAttributes.System), StringComparison.InvariantCultureIgnoreCase))
                {
                    attributes |= NtfsFileAttributes.System;
                }
                else if (trimmed.Equals(nameof(NtfsFileAttributes.None), StringComparison.InvariantCultureIgnoreCase))
                {
                    attributes |= NtfsFileAttributes.None;
                }
                else if (trimmed.Equals(nameof(NtfsFileAttributes.Directory), StringComparison.InvariantCultureIgnoreCase))
                {
                    attributes |= NtfsFileAttributes.Directory;
                }
                else if (trimmed.Equals(nameof(NtfsFileAttributes.Archive), StringComparison.InvariantCultureIgnoreCase))
                {
                    attributes |= NtfsFileAttributes.Archive;
                }
                else if (trimmed.Equals(nameof(NtfsFileAttributes.Temporary), StringComparison.InvariantCultureIgnoreCase))
                {
                    attributes |= NtfsFileAttributes.Temporary;
                }
                else if (trimmed.Equals(nameof(NtfsFileAttributes.Offline), StringComparison.InvariantCultureIgnoreCase))
                {
                    attributes |= NtfsFileAttributes.Offline;
                }
                else if (trimmed.Equals(nameof(NtfsFileAttributes.NotContentIndexed), StringComparison.InvariantCultureIgnoreCase))
                {
                    attributes |= NtfsFileAttributes.NotContentIndexed;
                }
                else if (trimmed.Equals(nameof(NtfsFileAttributes.NoScrubData), StringComparison.InvariantCultureIgnoreCase))
                {
                    attributes |= NtfsFileAttributes.NoScrubData;
                }
                else
                {
                    throw Errors.InvalidArgument(trimmed);
                }
            }
            return(attributes);
        }