当前位置: 首页>>代码示例>>C#>>正文


C# ChunkedMemoryStream.Seek方法代码示例

本文整理汇总了C#中ChunkedMemoryStream.Seek方法的典型用法代码示例。如果您正苦于以下问题:C# ChunkedMemoryStream.Seek方法的具体用法?C# ChunkedMemoryStream.Seek怎么用?C# ChunkedMemoryStream.Seek使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ChunkedMemoryStream的用法示例。


在下文中一共展示了ChunkedMemoryStream.Seek方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: TestSeekInternalStateNotChanged1

        public void TestSeekInternalStateNotChanged1()
        {
            using (var stream = new ChunkedMemoryStream()) {
            Assert.AreEqual(0L, stream.Position);
            Assert.AreEqual(0L, stream.Length);

            Assert.AreEqual(0L, stream.Seek(0L, SeekOrigin.Begin));
            Assert.AreEqual(0L, stream.Length);

            stream.Write(new byte[] {0x00, 0x01, 0x02, 0x03}, 0, 4);

            Assert.AreEqual(4L, stream.Position);
            Assert.AreEqual(4L, stream.Length);
              }
        }
开发者ID:pengyancai,项目名称:cs-util,代码行数:15,代码来源:ChunkedMemoryStream.cs

示例2: TestSeekEnd

        public void TestSeekEnd()
        {
            using (var stream = new ChunkedMemoryStream(8)) {
            for (var i = 0; i < 0x20; i++) {
              stream.WriteByte((byte)i);
            }

            Assert.AreEqual(0x00, stream.Seek(-0x20, SeekOrigin.End));
            Assert.AreEqual(0x00, stream.ReadByte());

            Assert.AreEqual(0x18, stream.Seek(-0x08, SeekOrigin.End));
            Assert.AreEqual(0x18, stream.ReadByte());

            Assert.AreEqual(0x0f, stream.Seek(-0x11, SeekOrigin.End));
            Assert.AreEqual(0x0f, stream.ReadByte());

            Assert.AreEqual(0x40, stream.Seek(+0x20, SeekOrigin.End));

            try {
              stream.Seek(-0x41, SeekOrigin.End);
              Assert.Fail("IOException not thrown");
            }
            catch (IOException) {
            }
              }
        }
开发者ID:pengyancai,项目名称:cs-util,代码行数:26,代码来源:ChunkedMemoryStream.cs

示例3: TestSeekAndReadRandom

        public void TestSeekAndReadRandom()
        {
            using (var stream = new ChunkedMemoryStream(8)) {
            for (var i = 0; i < 12; i++) {
              stream.WriteByte((byte)i);
            }

            Assert.IsTrue(stream.CanSeek);
            Assert.AreEqual(12L, stream.Position);
            Assert.AreEqual(12L, stream.Length);

            Assert.AreEqual(6L, stream.Seek(6L, SeekOrigin.Begin));
            Assert.AreEqual(6L, stream.Position);

            var pair = new long[][] {
              // offset / position
              new long[] { 0, 6},
              new long[] {-2, 5},
              new long[] { 1, 7},
              new long[] {-4, 4},
              new long[] { 3, 8},
              new long[] {-6, 3},
              new long[] { 5, 9},
              new long[] {-8, 2},
              new long[] { 7,10},
              new long[] {-10, 1},
              new long[] { 9,11},
            };

            for (var index = 0; index < pair.Length; index++) {
              try {
            Assert.AreEqual(pair[index][1], stream.Seek(pair[index][0], SeekOrigin.Current), "seeked position {0}", index);
              }
              catch (IOException) {
            Assert.Fail("IOException thrown while seeking ({0})", index);
              }

              Assert.AreEqual(pair[index][1], stream.Position);
              Assert.AreEqual(pair[index][1], stream.ReadByte(), "read value {0}", index);
              Assert.AreEqual(pair[index][1] + 1, stream.Position);
            }

            Assert.AreEqual(-1, stream.ReadByte());
            Assert.AreEqual(13, stream.Seek(1, SeekOrigin.Current));
            Assert.AreEqual(-1, stream.ReadByte());
            Assert.AreEqual(13, stream.Position);
              }
        }
开发者ID:pengyancai,项目名称:cs-util,代码行数:48,代码来源:ChunkedMemoryStream.cs

示例4: TestReadByte

        public void TestReadByte()
        {
            using (var stream = new ChunkedMemoryStream(8)) {
            for (var i = 0; i < 32; i++) {
              stream.WriteByte((byte)i);
            }

            Assert.AreEqual(0L, stream.Seek(0L, SeekOrigin.Begin));

            Assert.AreEqual(0L, stream.Position);
            Assert.AreEqual(32L, stream.Length);

            for (var i = 0; i < 32; i++) {
              Assert.AreEqual((long)i, stream.Position);
              Assert.AreEqual(i, stream.ReadByte());
              Assert.AreEqual((long)i + 1, stream.Position);
            }

            Assert.AreEqual(-1, stream.ReadByte());
              }
        }
开发者ID:pengyancai,项目名称:cs-util,代码行数:21,代码来源:ChunkedMemoryStream.cs

示例5: TestRead

        public void TestRead()
        {
            using (var stream = new ChunkedMemoryStream(8)) {
            for (var i = 0; i < 32; i++) {
              stream.WriteByte((byte)i);
            }

            Assert.AreEqual(0L, stream.Seek(0, SeekOrigin.Begin));

            var buffer = new byte[16];

            Assert.AreEqual(1, stream.Read(buffer, 0, 1));
            Assert.AreEqual(new byte[] {0x00}, buffer.Slice(0, 1));
            Assert.AreEqual(1L, stream.Position);

            Assert.AreEqual(3, stream.Read(buffer, 0, 3));
            Assert.AreEqual(new byte[] {0x01, 0x02, 0x03}, buffer.Slice(0, 3));
            Assert.AreEqual(4L, stream.Position);

            Assert.AreEqual(4, stream.Read(buffer, 0, 4));
            Assert.AreEqual(new byte[] {0x04, 0x05, 0x06, 0x07}, buffer.Slice(0, 4));
            Assert.AreEqual(8L, stream.Position);

            Assert.AreEqual(7, stream.Read(buffer, 0, 7));
            Assert.AreEqual(new byte[] {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e}, buffer.Slice(0, 7));
            Assert.AreEqual(15L, stream.Position);

            Assert.AreEqual(2, stream.Read(buffer, 0, 2));
            Assert.AreEqual(new byte[] {0x0f, 0x10}, buffer.Slice(0, 2));
            Assert.AreEqual(17L, stream.Position);

            Assert.AreEqual(15, stream.Read(buffer, 0, 16));
            Assert.AreEqual(new byte[] {0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f}, buffer.Slice(0, 15));
            Assert.AreEqual(32L, stream.Position);
              }
        }
开发者ID:pengyancai,项目名称:cs-util,代码行数:36,代码来源:ChunkedMemoryStream.cs

示例6: ReadNextRecord

 /// <summary>
 /// Read the next unread record from the stream. Will return <see cref="QueueStreamRecord.Empty"/> if there is no next record in the stream.
 /// </summary>
 /// <returns></returns>
 public QueueStreamRecord ReadNextRecord()
 {
     EnsureInstanceNotDisposed();
     if(_recordQueue.Count == 0) {
         return QueueStreamRecord.Empty;
     }
     var next = _recordQueue.Dequeue();
     var streamInfo = GetStreamInfoFromHandle(next);
     if(streamInfo == null) {
         EnsureInstanceNotDisposed();
         throw new InvalidOperationException("unable to access stream for head file");
     }
     streamInfo.Stream.Seek(next.Position + HEADER_SIZE, SeekOrigin.Begin);
     var data = new ChunkedMemoryStream();
     var copied = streamInfo.Stream.CopyTo(data, next.Length);
     if(copied != next.Length) {
         _log.WarnFormat("reached EOF in the middle of the record");
         return QueueStreamRecord.Empty;
     }
     data.Seek(0, SeekOrigin.Begin);
     return new QueueStreamRecord(data, next);
 }
开发者ID:sdether,项目名称:DReAM,代码行数:26,代码来源:MultiFileQueueStream.cs


注:本文中的ChunkedMemoryStream.Seek方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。