public byte[] GetTimeZoneData(string id) { int i = Array.BinarySearch(ids, id, StringComparer.Ordinal); if (i < 0) { return(null); } int offset = byteOffsets [i]; int length = lengths [i]; var buffer = new byte [length]; lock (data) { data.Position = offset; int r; if ((r = data.Read(buffer, 0, buffer.Length)) < buffer.Length) { throw new InvalidOperationException( string.Format("Unable to fully read from file '{0}' at offset {1} length {2}; read {3} bytes expected {4}.", tzdataPath, offset, length, r, buffer.Length)); } } TimeZoneInfo.DumpTimeZoneDataToFile(id, buffer); return(buffer); }