/// <summary> /// Adds a disk file to the ISO image as a file. /// </summary> /// <param name="name">The name of the file on the ISO image.</param> /// <param name="sourcePath">The name of the file on disk.</param> /// <returns>The object representing this file.</returns> /// <remarks> /// The name is the full path to the file, for example: /// <example><code> /// builder.AddFile(@"DIRA\DIRB\FILE.TXT;1", @"C:\temp\tempfile.bin"); /// </code></example> /// <para>Note the version number at the end of the file name is optional, if not /// specified the default of 1 will be used.</para> /// </remarks> public BuildFileInfo AddFile(string name, string sourcePath) { string[] nameElements = name.Split(new[] { '\\' }, StringSplitOptions.RemoveEmptyEntries); BuildDirectoryInfo dir = GetDirectory(nameElements, nameElements.Length - 1, true); BuildDirectoryMember existing; if (dir.TryGetMember(nameElements[nameElements.Length - 1], out existing)) { throw new IOException("File already exists"); } BuildFileInfo fi = new BuildFileInfo(nameElements[nameElements.Length - 1], dir, sourcePath); _files.Add(fi); dir.Add(fi); return(fi); }
/// <summary> /// Adds a stream to the ISO image as a file. /// </summary> /// <param name="name">The name of the file on the ISO image.</param> /// <param name="source">The contents of the file.</param> /// <returns>The object representing this file.</returns> /// <remarks> /// The name is the full path to the file, for example: /// <example><code> /// builder.AddFile(@"DIRA\DIRB\FILE.TXT;1", stream); /// </code></example> /// <para>Note the version number at the end of the file name is optional, if not /// specified the default of 1 will be used.</para> /// </remarks> public BuildFileInfo AddFile(string name, Stream source) { if (!source.CanSeek) { throw new ArgumentException("source doesn't support seeking", nameof(source)); } string[] nameElements = name.Split(new[] { '\\' }, StringSplitOptions.RemoveEmptyEntries); BuildDirectoryInfo dir = GetDirectory(nameElements, nameElements.Length - 1, true); BuildDirectoryMember existing; if (dir.TryGetMember(nameElements[nameElements.Length - 1], out existing)) { throw new IOException("File already exists"); } BuildFileInfo fi = new BuildFileInfo(nameElements[nameElements.Length - 1], dir, source); _files.Add(fi); dir.Add(fi); return(fi); }
public FileExtent(BuildFileInfo fileInfo, long start) : base(start, fileInfo.GetDataSize(Encoding.ASCII)) { _fileInfo = fileInfo; }