/// <summary> /// Creates a new FileRecordInfo by parsing the name of the specified filename. /// </summary> /// <param name="filename">Name of the file to attempt to create a FileRecordInfo out of</param> /// <returns>FileRecordInfo on success, null on failure</returns> public static FileRecordInfo Create(string filename) { var match = PatternRecord.Match(filename); if (match.Success == false) { return(null); } var result = new FileRecordInfo { Hash = match.Groups["hash"].Value }; var imageMatch = match.Groups["image_name"]; if (imageMatch.Success) { result.ImagePath = imageMatch.Value; } else { result.Resource = GetResourceType(match.Groups["resource_type"].Value); result.VersionHash = match.Groups["version_hash"].Value; result.Payload = GetPayloadType(match.Groups["payload_type"].Value); result.UnknownVersionNumber = int.Parse(match.Groups["unknown_version_number"].Value); result.Variant = GetVariantType(match.Groups["variants_type"].Value); } return(result); }
/// <summary> /// Reads a file record from a Bag stream. /// </summary> /// <param name="inStream">Stream containing FileRecord data. Assumes stream is already positioned to the FileRecord data</param> public void Read(BinaryReader inStream) { Offset = inStream.ReadInt64(); Length = inStream.ReadUInt32(); TimestampNs = inStream.ReadInt64(); var nameLength = inStream.ReadInt32(); Name = new string(inStream.ReadChars(nameLength)); Info = FileRecordInfo.Create(Name); }