private static void ApplyOptions([NotNull] FileEntry file, FileOptions options)
        {
            if (options.HasFlag(FileOptions.Encrypted))
            {
                file.SetEncrypted();
            }

            if (options.HasFlag(FileOptions.DeleteOnClose))
            {
                file.EnableDeleteOnClose();
            }
        }
示例#2
0
        public override IFileStream Handle(FileCreateArguments arguments)
        {
            Guard.NotNull(arguments, nameof(arguments));
            AssertValidCreationOptions(arguments);

            var resolver = new FileResolver(Root);
            FileResolveResult resolveResult = resolver.TryResolveFile(arguments.Path);

            AssertIsNotHiddenOrReadOnly(resolveResult.ExistingFileOrNull, arguments.Path);

            FileEntry file = resolveResult.ExistingFileOrNull ??
                             resolveResult.ContainingDirectory.CreateFile(resolveResult.FileName);

            if ((arguments.Options & FileOptions.DeleteOnClose) != 0)
            {
                file.EnableDeleteOnClose();
            }

            return(file.Open(FileMode.Create, FileAccess.ReadWrite, arguments.Path));
        }