BinaryWriter.Seek Method (Int32, SeekOrigin)
.NET Framework (current version)
Sets the position within the current stream.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- offset
-
Type:
System.Int32
A byte offset relative to origin.
- origin
-
Type:
System.IO.SeekOrigin
A field of SeekOrigin indicating the reference point from which the new position is to be obtained.
| Exception | Condition |
|---|---|
| IOException | The file pointer was moved to an invalid location. |
| ArgumentException | The SeekOrigin value is invalid. |
For a list of common I/O tasks, see Common I-O Tasks.
The following example writes a series of byte values to a file. The example uses Seek to move to various locations in the file, and then writes marker bytes by using the Write method.
using System; using System.IO; using System.Text; public class BinReadWrite { public static void Main() { string testfile = @"C:\temp\testfile.bin"; // create a test file using BinaryWriter FileStream fs = File.Create(testfile); UTF8Encoding utf8 = new UTF8Encoding(); BinaryWriter bw = new BinaryWriter(fs, utf8); // write a series of bytes to the file, each time incrementing // the value from 0 - 127 int pos; for (pos = 0; pos < 128; pos++) { bw.Write((byte)pos); } // reset the stream position for the next write pass bw.Seek(0, SeekOrigin.Begin); // write marks in file with the value of 255 going forward for (pos = 0; pos < 120; pos += 8) { bw.Seek(7, SeekOrigin.Current); bw.Write((byte)255); } // reset the stream position for the next write pass bw.Seek(0, SeekOrigin.End); // write marks in file with the value of 254 going backward for (pos = 128; pos > 6; pos -= 6) { bw.Seek(-6, SeekOrigin.Current); bw.Write((byte)254); bw.Seek(-1, SeekOrigin.Current); } // now dump the contents of the file using the original file stream fs.Seek(0, SeekOrigin.Begin); byte[] rawbytes = new byte[fs.Length]; fs.Read(rawbytes, 0, (int)fs.Length); int i = 0; foreach (byte b in rawbytes) { switch (b) { case 254: { Console.Write("-%- "); } break; case 255: { Console.Write("-*- "); } break; default: { Console.Write("{0:d3} ", b); } break; } i++; if (i == 16) { Console.WriteLine(); i = 0; } } fs.Close(); } } //The output from the program is this: // // 000 001 -%- 003 004 005 006 -*- -%- 009 010 011 012 013 -%- -*- // 016 017 018 019 -%- 021 022 -*- 024 025 -%- 027 028 029 030 -*- // -%- 033 034 035 036 037 -%- -*- 040 041 042 043 -%- 045 046 -*- // 048 049 -%- 051 052 053 054 -*- -%- 057 058 059 060 061 -%- -*- // 064 065 066 067 -%- 069 070 -*- 072 073 -%- 075 076 077 078 -*- // -%- 081 082 083 084 085 -%- -*- 088 089 090 091 -%- 093 094 -*- // 096 097 -%- 099 100 101 102 -*- -%- 105 106 107 108 109 -%- -*- // 112 113 114 115 -%- 117 118 -*- 120 121 -%- 123 124 125 126 127
Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Show: