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.Move |
ファイルをコピーする。 | File.Copy |
ディレクトリのサイズを取得する。 | 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 名前空間 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み