public void AddFile ( string type, string filename, ArraySegment<byte> bytes, int? position = null, Dictionary<string, object> properties = null, SourceMapBuilder sourceMapBuilder = null ) { lock (Files) { if (position.HasValue) FileOrder.Insert(position.Value, filename); else FileOrder.Add(filename); Files.Add(filename, new ResultFile { Type = type, Filename = filename, Contents = bytes, Size = bytes.Count, Properties = properties, SourceMapBuilder = sourceMapBuilder }); } }
private static void WriteBytesToFile (string folder, string name, ArraySegment<byte> bytes, SourceMapBuilder sourceMapBuilder = null) { var filePath = Path.Combine(folder, name); var fileMode = File.Exists(filePath) ? FileMode.Truncate : FileMode.CreateNew; EnsureDirectoryExists(Path.GetDirectoryName(filePath)); bool writeMapLink = sourceMapBuilder != null && sourceMapBuilder.Build(folder, name); using (var fs = File.Open(filePath, fileMode, FileAccess.Write, FileShare.Read)) { fs.Write(bytes.Array, bytes.Offset, bytes.Count); if (writeMapLink) sourceMapBuilder.WriteSourceMapLink(fs, folder, name); fs.Flush(); } }