FileStream.Seek Method (Int64, SeekOrigin)
Sets the current position of this stream to the given value.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- offset
-
Type:
System.Int64
The point relative to origin from which to begin seeking.
- origin
-
Type:
System.IO.SeekOrigin
Specifies the beginning, the end, or the current position as a reference point for offset, using a value of type SeekOrigin.
| Exception | Condition |
|---|---|
| IOException | An I/O error occurred. |
| NotSupportedException | The stream does not support seeking, such as if the FileStream is constructed from a pipe or console output. |
| ArgumentException | Seeking is attempted before the beginning of the stream. |
| ObjectDisposedException | Methods were called after the stream was closed. |
This method overrides Stream.Seek.
Note |
|---|
Use the FileStream.CanSeek property to determine whether the current instance supports seeking. For additional information, see Stream.CanSeek. |
You can seek to any location beyond the length of the stream. When you seek beyond the length of the file, the file size grows. In Windows NT and later versions, data added to the end of the file is set to zero. In Windows 98 or earlier versions, data added to the end of the file is not set to zero, which means that previously deleted data is visible to the stream.
For a list of common file and directory operations, see Common I-O Tasks.
The following example shows how to write data to a file, byte by byte, and then verify that the data was written correctly.
Imports Microsoft.VisualBasic Imports System Imports System.IO Imports System.Text Class FStream Shared Sub Main() Const fileName As String = "Test#@@#.dat" ' Create random data to write to the file. Dim dataArray(100000) As Byte Dim randomGenerator As New Random() randomGenerator.NextBytes(dataArray) Dim fileStream As FileStream = _ new FileStream(fileName, FileMode.Create) Try ' Write the data to the file, byte by byte. For i As Integer = 0 To dataArray.Length - 1 fileStream.WriteByte(dataArray(i)) Next i ' Set the stream position to the beginning of the stream. fileStream.Seek(0, SeekOrigin.Begin) ' Read and verify the data. For i As Integer = 0 To _ CType(fileStream.Length, Integer) - 1 If dataArray(i) <> fileStream.ReadByte() Then Console.WriteLine("Error writing data.") Return End If Next i Console.WriteLine("The data was written to {0} " & _ "and verified.", fileStream.Name) Finally fileStream.Close() End Try End Sub End Class
The following example reads text in the reverse direction, from the end of file to the beginning of the file, by using the various SeekOrigin values with the Seek method.
Imports System Imports System.IO Public Class FSSeek Public Shared Sub Main() Dim offset As Long Dim nextByte As Integer ' alphabet.txt contains "abcdefghijklmnopqrstuvwxyz" Using fs As New FileStream("c:\temp\alphabet.txt", FileMode.Open, FileAccess.Read) For offset = 1 To fs.Length fs.Seek(-offset, SeekOrigin.End) Console.Write(Convert.ToChar(fs.ReadByte())) Next offset Console.WriteLine() fs.Seek(20, SeekOrigin.Begin) nextByte = fs.ReadByte() While (nextByte > 0) Console.Write(Convert.ToChar(nextByte)) nextByte = fs.ReadByte() End While Console.WriteLine() End Using End Sub End Class ' This code example displays the following output: ' ' zyxwvutsrqponmlkjihgfedcba ' uvwxyz
Available since 10
.NET Framework
Available since 1.1
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
