コード例 #1
0
        private async void SavePbis(IFileSystem archiveFileSystem, IList <IList <PointMapping> > mappings, IList <PointMapping> distinctPointMappings)
        {
            for (var pbiIndex = 0; pbiIndex < mappings.Count; pbiIndex++)
            {
                var pbiFile   = $"{pbiIndex:000}.pbi";
                var pbiStream = await archiveFileSystem.OpenFileAsync(pbiFile);

                var copy = new byte[0x8];
                pbiStream.Read(copy, 0, copy.Length);

                var output = new MemoryStream();
                var bw     = new BinaryWriterX(output, true);

                bw.Write(copy);
                bw.Write(mappings[pbiIndex].Count);

                var mappingIndices = mappings[pbiIndex]
                                     .Select(x => (short)distinctPointMappings.IndexOf(x))
                                     .ToArray();
                WriteMultipleCompressed(bw, mappingIndices, Level5CompressionMethod.Lz10);
                archiveFileSystem.SetFileData(pbiFile, output);

                bw.Dispose();
            }
        }