FileStream.Read メソッド
ストリームからバイトのブロックを読み取り、そのデータを特定のバッファに書き込みます。
Overrides Public Function Read( _
<InteropServices.In(), _
Out()> ByVal array() As Byte, _ ByVal offset As Integer, _ ByVal count As Integer _) As Integer
[C#]
public override int Read( [ In, Out] byte[] array,intoffset,intcount);
[C++]
public: int Read( [ In, Out] unsigned chararray __gc[],intoffset,intcount);
[JScript]
public override function Read(
array : Byte[],offset : int,count : int) : int;
パラメータ
- array
このメソッドが戻るとき、指定したバイト配列の offset から (offset + count - 1) までの値が、現在のソースから読み取られたバイトに置き換えられます。 - offset
読み取りの開始位置を示す array 内のバイト オフセット。 - count
読み取る最大バイト数。
戻り値
バッファに読み取られた合計文字数。要求しただけのバイト数を読み取れなかった場合、この値は要求したバイト数より小さくなります。ストリームの末尾に到達した場合は 0 になることがあります。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | array が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | offset または count が負の値です。 |
NotSupportedException | ストリームが読み取りをサポートしていません。 |
IOException | I/O エラーが発生しました。 |
ArgumentException | offset と count が array の無効な範囲を示しています。 |
ObjectDisposedException | ストリームが閉じられた後でメソッドが呼び出されました。 |
解説
このメソッドは、 Read をオーバーライドします。
offset パラメータは読み取りを開始する位置の array のバイトのオフセット (バッファ インデックス) を指定し、 count パラメータはこのストリームから読み取るバイトの最大数を指定します。戻り値は、実際に読み取ったバイト数であり、ストリームの末尾に到達している場合は 0 です。読み取り操作が正常に終了した場合、ストリームの現在位置は読み取ったバイト数だけ進みます。例外が発生した場合、ストリームの現在位置は変更されません。
Read メソッドは、ストリームの末尾に到達した後に必ず 0 を返します。それ以外の場合、 Read は戻り値を返す前に常にストリームから少なくとも 1 バイトを読み取ります。 Read の呼び出し時に利用できるデータがストリームにない場合、メソッドは少なくとも 1 バイトのデータを返すまでブロックします。メソッドの実装は、ストリームの末尾に到達していない場合でも、要求された数に満たないバイトを返すようにすることができます。
プリミティブ データ型を読み取る場合は BinaryReader を使用します。
このメソッドの使用例については、以下の「使用例」を参照してください。その他の一般的な I/O タスクまたは関連する I/O タスクの例を次の表に示します。
実行するタスク | 参考例があるトピック |
---|---|
テキスト ファイルを作成する。 | ファイルへのテキストの書き込み |
テキスト ファイルに書き込む。 | ファイルへのテキストの書き込み |
テキスト ファイルから読み取る。 | ファイルからのテキストの読み取り |
テキストをファイルに追加する。 | ログ ファイルのオープンと追加 |
ファイルの名前を変更、またはファイルを移動する。 | File.Move |
ファイルをコピーする。 | File.Copy |
ファイルのサイズを取得する。 | FileInfo.Length |
ファイルの属性を取得する。 | File.GetAttributes |
ファイルの属性を設定する。 | File.SetAttributes |
ファイルが存在するかどうかを判別する。 | File.Exists |
バイナリ ファイルから読み取る。 | 新しく作成したデータ ファイルの読み取りと書き込み |
バイナリ ファイルに書き込む。 | 新しく作成したデータ ファイルの読み取りと書き込み |
ディレクトリを作成する。 | Directory.CreateDirectory |
使用例
[Visual Basic, C#, C++] 既存ファイルから指定したバイト数を読み取る例を次に示します。
Imports System
Imports System.IO
Class FSRead
Public Shared Sub Main()
'Create a file stream from an existing file.
Dim fi As New FileInfo("c:\csc.txt")
Dim fs As FileStream = fi.OpenRead()
'Read 100 bytes into an array from the specified file.
Dim nBytes As Integer = 100
Dim ByteArray(nBytes) As Byte
Dim nBytesRead As Integer = fs.Read(ByteArray, 0, nBytes)
Console.WriteLine("{0} bytes have been read from the specified file.", nBytesRead.ToString())
End Sub 'Main
End Class 'FSRead
[C#]
using System;
using System.IO;
class FSRead
{
public static void Main()
{
//Create a file stream from an existing file.
FileInfo fi=new FileInfo("c:\\csc.txt");
FileStream fs=fi.OpenRead();
//Read 100 bytes into an array from the specified file.
int nBytes=100;
byte[] ByteArray=new byte[nBytes];
int nBytesRead=fs.Read(ByteArray, 0, nBytes);
Console.WriteLine("{0} bytes have been read from the specified file.", nBytesRead.ToString());
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::IO;
int main() {
//Create a file stream from an existing file.
FileInfo* fi = new FileInfo(S"c:\\csc.txt");
FileStream* fs = fi->OpenRead();
//Read 100 bytes into an array from the specified file.
int nBytes=100;
Byte ByteArray[] = new Byte[nBytes];
int nBytesRead = fs->Read(ByteArray, 0, nBytes);
Console::WriteLine(S"{0} bytes have been read from the specified file.", __box(nBytesRead));
}
[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 名前空間 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み