次の方法で共有


FileStream.Seek メソッド

ストリームの現在位置を特定の値に設定します。

Overrides Public Function Seek( _
   ByVal offset As Long, _   ByVal origin As SeekOrigin _) As Long
[C#]
public override long Seek(longoffset,SeekOriginorigin);
[C++]
public: __int64 Seek(__int64offset,SeekOriginorigin);
[JScript]
public override function Seek(
   offset : long,origin : SeekOrigin) : long;

パラメータ

  • offset
    シークの開始位置 origin に対して相対的なポイント。
  • origin
    SeekOrigin 型の値を使用して、 origin の参照ポイントとして先頭、末尾、または現在位置を指定します。

戻り値

ストリームの新しい位置。

例外

例外の種類 条件
IOException I/O エラーが発生しました。
NotSupportedException ストリームがシークをサポートしていません。たとえば、 FileStream がパイプまたはコンソール出力から構築されました。
ArgumentException ストリームの開始前にシークしようとしました。
ObjectDisposedException ストリームが閉じられた後でメソッドが呼び出されました。

解説

このメソッドは、 Seek をオーバーライドします。

メモ   現在のインスタンスがシークをサポートしているかどうかを判断するには、 CanSeek プロパティを使用します。詳細については、 CanSeek のトピックを参照してください。

ストリーム長を超えた位置へのシークがサポートされています。

プラットフォームによっては、ファイル終端を超えてシークをして、書き込み操作を実行した場合の動作が未定義です。

その他の一般的な I/O タスクまたは関連する I/O タスクの例を次の表に示します。

実行するタスク 参考例があるトピック
テキスト ファイルを作成する。 ファイルへのテキストの書き込み
テキスト ファイルに書き込む。 ファイルへのテキストの書き込み
テキスト ファイルから読み取る。 ファイルからのテキストの読み取り
テキストをファイルに追加する。 ログ ファイルのオープンと追加

File.AppendText

FileInfo.AppendText

ファイルの名前を変更、またはファイルを移動する。 File.Move

FileInfo.MoveTo

ファイルをコピーする。 File.Copy

FileInfo.CopyTo

ディレクトリのサイズを取得する。 FileInfo.Length
ファイルの属性を取得する。 File.GetAttributes
ファイルの属性を設定する。 File.SetAttributes
サブディレクトリを作成する。 CreateSubdirectory
バイナリ ファイルから読み取る。 新しく作成したデータ ファイルの読み取りと書き込み
バイナリ ファイルに書き込む。 新しく作成したデータ ファイルの読み取りと書き込み
ディレクトリ内のファイルを参照する。 Name
ディレクトリ内のファイルをサイズ順に並べ替える。 GetFileSystemInfos

使用例

[Visual Basic, C#, C++] ファイルにデータをバイト単位で書き込み、さらにデータが正常に書き込まれたことを確認する例を次に示します。

 
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

[C#] 
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);
        }
    }
}

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::IO;

void main()
{
    String* fileName = "Test@##@.dat";

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

    FileStream* fileStream = 
        new 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(S"Error writing data.");
                return;
            }
        }
        Console::WriteLine(S"The data was written to {0} " 
            S"and verified.", fileStream->Name);
    }
    __finally
    {
        fileStream->Close();
    }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

FileStream クラス | FileStream メンバ | System.IO 名前空間 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み