示例#1
0
        public VirtualFileStream(IVirtualFileDataAccessor VirtualFileDataAccessor, string path, StreamType streamType)
        {
            if (VirtualFileDataAccessor == null)
            {
                throw new ArgumentNullException("VirtualFileDataAccessor");
            }

            this.VirtualFileDataAccessor = VirtualFileDataAccessor;
            this.path = path;

            if (VirtualFileDataAccessor.FileExists(path))
            {
                /* only way to make an expandable MemoryStream that starts with a particular content */
                var data = VirtualFileDataAccessor.GetFile(path).Contents;
                if (data != null && data.Length > 0)
                {
                    Write(data, 0, data.Length);
                    Seek(0, StreamType.APPEND.Equals(streamType)
                        ? SeekOrigin.End
                        : SeekOrigin.Begin);
                }
            }
            else
            {
                if (StreamType.READ.Equals(streamType))
                {
                    throw new FileNotFoundException("File not found.", path);
                }
                VirtualFileDataAccessor.AddFile(path, new VirtualFileData(new byte[] { }));
            }
        }
示例#2
0
        private List <TreeNode> InitializeFileSystemTree(IVirtualFileDataAccessor fileSystem)
        {
            var driveNodes = new List <TreeNode>();
            var drives     = fileSystem.DriveInfo.GetDrives();

            foreach (var drive in drives)
            {
                TreeNode driveNode = new TreeNode
                {
                    Name = drive.Name,
                    Text = $@"Локальный диск {drive.Name}",
                    SelectedImageIndex = 2,
                    ImageIndex         = 2
                };

                var subfolders = CreateFolderTree(new VirtualDirectoryInfo(fileSystem, drive.Name));
                foreach (var subfolder in subfolders)
                {
                    driveNode.Nodes.Add(subfolder);
                }
                driveNodes.Add(driveNode);
            }

            return(driveNodes);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="VirtualDirectoryInfo"/> class.
        /// </summary>
        /// <param name="VirtualFileDataAccessor">The Virtual file data accessor.</param>
        /// <param name="directoryPath">The directory path.</param>
        /// <exception cref="ArgumentNullException">Thrown if <paramref name="VirtualFileDataAccessor"/> or <paramref name="directoryPath"/> is <see langref="null"/>.</exception>
        public VirtualDirectoryInfo(IVirtualFileDataAccessor VirtualFileDataAccessor, string directoryPath)
        {
            this.VirtualFileDataAccessor = VirtualFileDataAccessor ?? throw new ArgumentNullException("VirtualFileDataAccessor");

            directoryPath = VirtualFileDataAccessor.Path.GetFullPath(directoryPath);

            this.directoryPath = EnsurePathEndsWithDirectorySeparator(directoryPath);
        }
示例#4
0
        public VirtualPath(IVirtualFileDataAccessor VirtualFileDataAccessor)
        {
            if (VirtualFileDataAccessor == null)
            {
                throw new ArgumentNullException("VirtualFileDataAccessor");
            }

            this.VirtualFileDataAccessor = VirtualFileDataAccessor;
        }
        public VirtualFileInfoFactory(IVirtualFileDataAccessor VirtualFileSystem)
        {
            if (VirtualFileSystem == null)
            {
                throw new ArgumentNullException("VirtualFileSystem");
            }

            this.VirtualFileSystem = VirtualFileSystem;
        }
示例#6
0
        public VirtualFileInfo(IVirtualFileDataAccessor VirtualFileSystem, string path)
        {
            if (VirtualFileSystem == null)
            {
                throw new ArgumentNullException("VirtualFileSystem");
            }

            this.VirtualFileSystem = VirtualFileSystem;
            this.path = path;
        }
示例#7
0
        public VirtualDriveInfo(IVirtualFileDataAccessor virtualFileDataAccessor, string name)
        {
            if (virtualFileDataAccessor == null)
            {
                throw new ArgumentNullException(nameof(virtualFileDataAccessor));
            }

            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            const string DRIVE_SEPARATOR = @":\";

            if (name.Length == 1)
            {
                name = char.ToUpperInvariant(name[0]) + DRIVE_SEPARATOR;
            }
            else if (name.Length == 2 && name[1] == ':')
            {
                name = char.ToUpperInvariant(name[0]) + DRIVE_SEPARATOR;
            }
            else if (name.Length == 3 && name.EndsWith(DRIVE_SEPARATOR, StringComparison.Ordinal))
            {
                name = char.ToUpperInvariant(name[0]) + DRIVE_SEPARATOR;
            }
            else
            {
                VirtualPath.CheckInvalidPathChars(name);
                name = virtualFileDataAccessor.Path.GetPathRoot(name);

                if (string.IsNullOrEmpty(name) || name.StartsWith(@"\\", StringComparison.Ordinal))
                {
                    throw new ArgumentException(
                              @"Object must be a root directory (""C:\"") or a drive letter (""C"").");
                }
            }

            this._virtualFileDataAccessor = virtualFileDataAccessor;

            Name    = name;
            IsReady = true;
        }
示例#8
0
 public VirtualDirectory(IVirtualFileDataAccessor VirtualFileDataAccessor, FileBase fileBase, string currentDirectory)
 {
     this.currentDirectory        = currentDirectory;
     this.VirtualFileDataAccessor = VirtualFileDataAccessor ?? throw new ArgumentNullException("VirtualFileDataAccessor");
     this.fileBase = fileBase;
 }
示例#9
0
 internal PathVerifier(IVirtualFileDataAccessor virtualFileDataAccessor)
 {
     _virtualFileDataAccessor = virtualFileDataAccessor ?? throw new ArgumentNullException(nameof(virtualFileDataAccessor));
 }
 public VirtualDirectoryInfoFactory(IVirtualFileDataAccessor VirtualFileSystem)
 {
     this.VirtualFileSystem = VirtualFileSystem;
 }