Example #1
0
 private List <V8File> ReadToC(V8Document tocDocument)
 {
     using (var reader = tocDocument.Open())
     {
         var files = FileAddress.ReadToC(reader)
                     .Select(addr => V8File.FromStream(this, addr));
         return(files.ToList());
     }
 }
Example #2
0
        /// <summary>
        /// Создает файл в контейнере с указанным именем.
        /// </summary>
        /// <param name="name">Имя файла, который необходимо создать в контейнере.</param>
        /// <returns>Созданный файл.</returns>
        public V8File CreateFile(string name)
        {
            ThrowIfDisposed();

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

            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentException($"{nameof(name)} не может быть пустым.", nameof(name));
            }

            if (_mode == V8ContainerMode.Read)
            {
                throw new InvalidOperationException("Контейнер открыт в режиме чтения. Создание файлов невозможно.");
            }

            if (_filesDictionary.ContainsKey(name))
            {
                throw new InvalidOperationException("Файл с таким именем уже существует.");
            }

            if (_baseStream.Length >= MaxLength)
            {
                throw new InvalidOperationException("Контейнер достиг максимального размера, создание новых файлов невозможно.");
            }

            var file = V8File.Create(this, name);

            file.Address.Write(_tocStream);

            _files.Add(file);
            _filesDictionary.Add(name, file);

            return(file);
        }