当前位置: 首页>>代码示例>>C#>>正文


C# IFileInfo.SetExtendedAttribute方法代码示例

本文整理汇总了C#中IFileInfo.SetExtendedAttribute方法的典型用法代码示例。如果您正苦于以下问题:C# IFileInfo.SetExtendedAttribute方法的具体用法?C# IFileInfo.SetExtendedAttribute怎么用?C# IFileInfo.SetExtendedAttribute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IFileInfo的用法示例。


在下文中一共展示了IFileInfo.SetExtendedAttribute方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Replace

        /// <summary>
        /// Replaces the contents of a specified destinationFile with the file described by the current IFileInfo
        /// object, deleting the original file, and creating a backup of the replaced file.
        /// Also specifies whether to ignore merge errors.
        /// </summary>
        /// <param name="destinationFile">Destination file.</param>
        /// <param name="destinationBackupFileName">Destination backup file name.</param>
        /// <param name="ignoreMetadataErrors"><c>true</c> to ignore merge errors (such as attributes and ACLs) from the replaced file to the replacement file; otherwise <c>false</c>.</param>
        /// <returns>A IFileInfo object that encapsulates information about the file described by the destFileName parameter.</returns>
        public IFileInfo Replace(IFileInfo destinationFile, IFileInfo destinationBackupFileName, bool ignoreMetadataErrors) {
#if __MonoCS__
            var reader = new ExtendedAttributeReaderUnix();
            var oldSourceEAs = new Dictionary<string, string>();
            var oldTargetEAs = new Dictionary<string, string>();
            if (reader.IsFeatureAvailable(this.FullName)) {
                foreach (var key in reader.ListAttributeKeys(this.FullName)) {
                    oldSourceEAs.Add(key, this.GetExtendedAttribute(key));
                }

                foreach (var key in reader.ListAttributeKeys(destinationFile.FullName)) {
                    oldTargetEAs.Add(key, destinationFile.GetExtendedAttribute(key));
                }
            }
#else
            try {
#endif
                var result = new FileInfoWrapper(this.original.Replace(destinationFile.FullName, destinationBackupFileName.FullName, ignoreMetadataErrors));
#if __MonoCS__
            foreach (var entry in oldSourceEAs) {
                result.SetExtendedAttribute(entry.Key, entry.Value, true);
            }

            foreach (var entry in oldTargetEAs) {
                destinationBackupFileName.SetExtendedAttribute(entry.Key, entry.Value, true);
            }

            return result;
#else
                return result;
            } catch (IOException ex) {
                int error = Marshal.GetHRForException(ex) & 0xffff;
                if (error == 1176) {
                    string newName = destinationFile.FullName + Guid.NewGuid().ToString() + ".sync";
                    IFileInfo newResult = null;
                    try {
                        var copy = this.original.CopyTo(newName, true);
                        newResult = new FileInfoWrapper(copy.Replace(destinationFile.FullName, destinationBackupFileName.FullName, ignoreMetadataErrors));
                        this.Delete();
                        return newResult;
                    } catch (Exception) {
                    } finally {
                        if (File.Exists(newName)) {
                            File.Delete(newName);
                        }
                    }

                    throw;
                } else {
                    throw;
                }
            }
#endif
        }
开发者ID:OpenDataSpace,项目名称:CmisSync,代码行数:63,代码来源:FileInfoWrapper.cs


注:本文中的IFileInfo.SetExtendedAttribute方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。