コード例 #1
0
        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);
        }