/// <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", "source"); } string[] nameElements = name.Split('\\'); 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"); } else { BuildFileInfo fi = new BuildFileInfo(nameElements[nameElements.Length - 1], dir, source); _files.Add(fi); dir.Add(fi); return fi; } }
/// <summary> /// Adds a byte array to the ISO image as a file. /// </summary> /// <param name="name">The name of the file on the ISO image.</param> /// <param name="content">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", new byte[]{0,1,2}); /// </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, byte[] content) { string[] nameElements = name.Split('\\'); 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"); } else { BuildFileInfo fi = new BuildFileInfo(nameElements[nameElements.Length - 1], dir, content); _files.Add(fi); dir.Add(fi); return fi; } }
/// <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 char[] { '\\' }, 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"); } else { BuildFileInfo fi = new BuildFileInfo(nameElements[nameElements.Length - 1], dir, sourcePath); _files.Add(fi); dir.Add(fi); return fi; } }
public FileExtent(BuildFileInfo fileInfo, long start) : base(start, fileInfo.GetDataSize(Encoding.ASCII)) { _fileInfo = fileInfo; }