Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo FileStream.Seek (Int64, SeekOrigin)

 

Data di pubblicazione: ottobre 2016

Imposta la posizione corrente del flusso sul valore dato.

Spazio dei nomi:   System.IO
Assembly:  mscorlib (in mscorlib.dll)

public override long Seek(
	long offset,
	SeekOrigin origin
)

Parametri

offset
Type: System.Int64

Punto relativo a origin da cui avviare la ricerca.

origin
Type: System.IO.SeekOrigin

Specifica l'inizio, la fine o la posizione corrente come punto di riferimento per offset, usando un valore di tipo SeekOrigin.

Valore restituito

Type: System.Int64

Nuova posizione all'interno del flusso.

Exception Condition
IOException

Si è verificato un errore di I/O.

NotSupportedException

Il flusso non supporta la ricerca, ad esempio se l'oggetto FileStream viene costruito da una pipe o da un output di console.

ArgumentException

La ricerca viene tentata prima dell'inizio del flusso.

ObjectDisposedException

Sono stati chiamati dei metodi dopo la chiusura del flusso.

Questo metodo esegue l'override Stream.Seek.

System_CAPS_noteNota

Utilizzare la FileStream.CanSeek proprietà per determinare se l'istanza corrente supporta la ricerca. Per altre informazioni, vedere Stream.CanSeek.

È possibile effettuare ricerche in qualsiasi posizione oltre la lunghezza del flusso. Durante la ricerca oltre la lunghezza del file aumentano le dimensioni del file. In Windows NT e versioni successive, i dati aggiunti alla fine del file sono impostati su zero. In Windows 98 o versioni precedenti, i dati aggiunti alla fine del file non è impostati su zero, il che significa che i dati eliminati in precedenza sono visibile nel flusso.

Per un elenco di operazioni di directory e file comuni, vedere Attività di I/O comuni.

Nell'esempio seguente viene illustrato come scrivere i dati in un file, byte per byte e quindi verificare che i dati vengano scritti correttamente.

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);
        }
    }
}

Nell'esempio seguente legge il testo nella direzione inversa, dalla fine del file all'inizio del file, usando i diversi SeekOrigin valori con il Seek metodo.

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

Universal Windows Platform
Disponibile da 10
.NET Framework
Disponibile da 1.1
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra: