FileStream.Seek(Int64, SeekOrigin) FileStream.Seek(Int64, SeekOrigin) FileStream.Seek(Int64, SeekOrigin) FileStream.Seek(Int64, SeekOrigin) Method

Definition

Legt die aktuelle Position dieses Streams auf den angegebenen Wert fest.Sets the current position of this stream to the given value.

public:
 override long Seek(long offset, System::IO::SeekOrigin origin);
public override long Seek (long offset, System.IO.SeekOrigin origin);
override this.Seek : int64 * System.IO.SeekOrigin -> int64
Public Overrides Function Seek (offset As Long, origin As SeekOrigin) As Long

Parameter

offset
Int64 Int64 Int64 Int64

Der Punkt relativ zu origin, ab dem gesucht werden soll.The point relative to origin from which to begin seeking.

origin
SeekOrigin SeekOrigin SeekOrigin SeekOrigin

Bestimmt den Anfang, das Ende oder die aktuelle Position als Bezugspunkt für offset unter Verwendung eines Werts vom Typ SeekOrigin.Specifies the beginning, the end, or the current position as a reference point for offset, using a value of type SeekOrigin.

Gibt zurück

Die neue Position im Stream.The new position in the stream.

Ausnahmen

E/A-FehlerAn I/O error occurred.

Der Stream unterstützt beispielsweise keine Suchvorgänge, wenn der FileStream aus einer Pipe- oder Konsolenausgabe erstellt wird.The stream does not support seeking, such as if the FileStream is constructed from a pipe or console output.

Es wird versucht, vor Beginn des Streams eine Suche auszuführen.Seeking is attempted before the beginning of the stream.

Es wurden Methoden aufgerufen, nachdem der Stream geschlossen wurde.Methods were called after the stream was closed.

Beispiele

Im folgenden Beispiel wird gezeigt, wie Daten in eine Datei geschrieben werden: Byte Weise Byte, und dann wird überprüft, ob die Daten ordnungsgemäß geschrieben wurden.The following example shows how to write data to a file, byte by byte, and then verify that the data was written correctly.

using namespace System;
using namespace System::IO;
int main()
{
   String^ fileName =  "Test@##@.dat";
   
   // Create random data to write to the file.
   array<Byte>^dataArray = gcnew array<Byte>(100000);
   (gcnew Random)->NextBytes( dataArray );
   FileStream^ fileStream = gcnew FileStream( fileName,FileMode::Create );
   try
   {
      
      // Write the data to the file, byte by byte.
      for ( int i = 0; i < dataArray->Length; i++ )
      {
         fileStream->WriteByte( dataArray[ i ] );

      }
      
      // Set the stream position to the beginning of the file.
      fileStream->Seek( 0, SeekOrigin::Begin );
      
      // Read and verify the data.
      for ( int i = 0; i < fileStream->Length; i++ )
      {
         if ( dataArray[ i ] != fileStream->ReadByte() )
         {
            Console::WriteLine( "Error writing data." );
            return  -1;
         }

      }
      Console::WriteLine( "The data was written to {0} "
      "and verified.", fileStream->Name );
   }
   finally
   {
      fileStream->Close();
   }

}

using System;
using System.IO;

class FStream
{
    static void Main()
    {
        const string fileName = "Test#@@#.dat";

        // Create random data to write to the file.
        byte[] dataArray = new byte[100000];
        new Random().NextBytes(dataArray);

        using(FileStream  
            fileStream = new FileStream(fileName, FileMode.Create))
        {
            // Write the data to the file, byte by byte.
            for(int i = 0; i < dataArray.Length; i++)
            {
                fileStream.WriteByte(dataArray[i]);
            }

            // Set the stream position to the beginning of the file.
            fileStream.Seek(0, SeekOrigin.Begin);

            // Read and verify the data.
            for(int i = 0; i < fileStream.Length; i++)
            {
                if(dataArray[i] != fileStream.ReadByte())
                {
                    Console.WriteLine("Error writing data.");
                    return;
                }
            }
            Console.WriteLine("The data was written to {0} " +
                "and verified.", fileStream.Name);
        }
    }
}
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

Im folgenden Beispiel wird der Text in umgekehrter Richtung vom Dateiende zum Anfang der Datei gelesen, indem die verschiedenen SeekOrigin Werte mit der Seek -Methode verwendet werden.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.

using System;
using System.IO;

public class FSSeek
{
    public static void Main()
    {
        long offset;
        int nextByte;

        // alphabet.txt contains "abcdefghijklmnopqrstuvwxyz"
        using (FileStream fs = new FileStream(@"c:\temp\alphabet.txt", FileMode.Open, FileAccess.Read))
        {
            for (offset = 1; offset <= fs.Length; offset++)
            {
                fs.Seek(-offset, SeekOrigin.End);
                Console.Write(Convert.ToChar(fs.ReadByte()));
            }
            Console.WriteLine();

            fs.Seek(20, SeekOrigin.Begin);

            while ((nextByte = fs.ReadByte()) > 0)
            {
                Console.Write(Convert.ToChar(nextByte));
            }
            Console.WriteLine();
        }
    }
}
// This code example displays the following output:
//
// zyxwvutsrqponmlkjihgfedcba
// uvwxyz
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

Hinweise

Diese Methode überschreibt Stream.Seek.This method overrides Stream.Seek.

Hinweis

Verwenden Sie FileStream.CanSeek die-Eigenschaft, um zu bestimmen, ob die aktuelle Instanz Suchvorgänge unterstütztUse the FileStream.CanSeek property to determine whether the current instance supports seeking. Weitere Informationen finden Sie unter Stream.CanSeek.For additional information, see Stream.CanSeek.

Sie können einen beliebigen Speicherort über die Länge des Streams hinaus suchen.You can seek to any location beyond the length of the stream. Wenn Sie über die Länge der Datei hinaus suchen, wächst die Dateigröße.When you seek beyond the length of the file, the file size grows. In Windows NT und höheren Versionen werden die am Ende der Datei hinzugefügten Daten auf 0 (null) festgelegt.In Windows NT and later versions, data added to the end of the file is set to zero. In Windows 98 oder früheren Versionen werden am Ende der Datei hinzugefügte Daten nicht auf 0 (null) festgelegt, was bedeutet, dass zuvor gelöschte Daten für den Stream sichtbar sind.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.

Eine Liste der allgemeinen Datei-und Verzeichnis Vorgänge finden Sie unter Allgemeine e/a-Aufgaben.For a list of common file and directory operations, see Common I/O Tasks.

Gilt für:

Siehe auch