Imports System.IO
Imports System.Text
Class MainWindow
Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)
Dim uniencoding As UnicodeEncoding = New UnicodeEncoding()
Dim filename As String = "c:\Users\exampleuser\Documents\userinputlog.txt"
Dim result As Byte() = uniencoding.GetBytes(UserInput.Text)
Using SourceStream As FileStream = File.Open(filename, FileMode.OpenOrCreate)
SourceStream.Seek(0, SeekOrigin.End)
Await SourceStream.WriteAsync(result, 0, result.Length)
End Using
End Sub
End Class
クラスを
FileStream
使用して、ファイル システム上のファイルの読み取り、書き込み、開き、閉じ、パイプ、標準入力、標準出力など、他のファイル関連のオペレーティング システム ハンドルを操作します。 、、
Write
、および
Flush
の各メソッドを
Read
使用して同期操作を実行するか、および
FlushAsync
メソッドを
CopyToAsync
ReadAsync
WriteAsync
使用して非同期操作を実行できます。
CopyTo
非同期メソッドを使用して、メイン スレッドをブロックせずにリソースを集中的に使用するファイル操作を実行します。 このパフォーマンスに関する考慮事項は、時間のかかるストリーム操作によって UI スレッドがブロックされ、アプリが動作していないと見なされる可能性がある Windows 8.x Store アプリまたはデスクトップ アプリで特に重要です。
FileStream
は、パフォーマンスを向上させるために入力と出力をバッファーに格納します。
この型は
IDisposable
インターフェイスを実装します。 型の使用が完了したら、直接的または間接的に型を破棄する必要があります。 直接的に型を破棄するには、
try
/
catch
ブロック内で
Dispose
メソッドを呼び出します。 間接的に型を破棄するには、
using
(C# の場合) または
Using
(Visual Basic 言語) などの言語構成要素を使用します。 詳細については、
IDisposable
インターフェイスに関するトピック内の「IDisposable を実装するオブジェクトの使用」セクションを参照してください。
プロパティは
IsAsync
、ファイル ハンドルが非同期的に開かれたかどうかを検出します。 、、または
options
パラメーターを持つコンストラクターを使用して クラスの
FileStream
インスタンスを作成するときに、この値を
isAsync
useAsync
指定します。 プロパティが の場合、ストリームは
true
重複した I/O を使用してファイル操作を非同期的に実行します。 ただし、 プロパティは
IsAsync
、または
CopyToAsync
メソッドを
WriteAsync
ReadAsync
呼び出す必要
true
はありません。 プロパティが
IsAsync
で
false
、非同期の読み取りおよび書き込み操作を呼び出しても、UI スレッドはブロックされませんが、実際の I/O 操作は同期的に実行されます。
メソッドは
Seek
、ファイルへのランダム アクセスをサポートします。
Seek
を使用すると、読み取り/書き込み位置をファイル内の任意の位置に移動できます。 これは、バイト オフセット参照ポイント パラメーターを使用して行われます。 バイト オフセットは、列挙型の 3 つのメンバーによって表される、基になるファイルの先頭、現在の位置、または末尾であるシーク参照ポイントに対する
SeekOrigin
相対位置です。
ディスク ファイルは常にランダム アクセスをサポートします。 構築時に、プロパティ値
CanSeek
は、基になるファイルの種類に応じて または
false
に
true
設定されます。 winbase.h で定義されているように、基になるファイルの種類がFILE_TYPE_DISKの場合、プロパティの
CanSeek
値は です
true
。 それ以外の場合、プロパティ値
CanSeek
は です
false
。
ファイルの一部がロックされた状態でプロセスが終了するか、未処理のロックを持つファイルを閉じると、動作は未定義になります。
ディレクトリ操作とその他のファイル操作については、および
Path
クラスを
File
Directory
参照してください。
File
クラスは、主にファイル パスに基づいてオブジェクトを作成
FileStream
するための静的メソッドを持つユーティリティ クラスです。 クラスは
MemoryStream
バイト配列からストリームを作成し、 クラスに似ています
FileStream
。
一般的なファイル操作とディレクトリ操作の一覧については、「
一般的な I/O タスク
」を参照してください。
ストリーム位置の変更の検出
オブジェクトがそのハンドルを
FileStream
排他的に保持していない場合、別のスレッドが同時にファイル ハンドルにアクセスし、ファイル ハンドルに関連付けられているオペレーティング システムのファイル ポインターの位置を変更できます。 この場合、オブジェクト内の
FileStream
キャッシュされた位置とバッファー内のキャッシュされたデータが侵害される可能性があります。 オブジェクトは
FileStream
、キャッシュされたバッファーにアクセスするメソッドに対して定期的にチェックを実行し、オペレーティング システムのハンドル位置が オブジェクトで
FileStream
使用されるキャッシュされた位置と同じであることを確認します。
メソッドの呼び出し
Read
でハンドル位置の予期しない変更が検出された場合、.NET Frameworkはバッファーの内容を破棄し、ファイルからストリームをもう一度読み取ります。 これは、ファイルのサイズや、ファイル ストリームの位置に影響を与える可能性があるその他のプロセスによっては、パフォーマンスに影響を与える可能性があります。
メソッドの呼び出し
Write
でハンドル位置の予期しない変更が検出された場合、バッファーの内容は破棄され、
IOException
例外がスローされます。
FileStream
ハンドルを公開するために プロパティにアクセスするか
SafeFileHandle
、オブジェクトにコンストラクターに プロパティが指定
SafeFileHandle
されている場合、オブジェクトはハンドル
FileStream
を排他的に保持しません。
現在のストリームを閉じ、現在のストリームに関連付けられているすべてのリソース (ソケット、ファイル ハンドルなど) を解放します。 このメソッドを呼び出す代わりに、ストリームが適切に破棄されていることを確認します。
(継承元
Stream
)
指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、指定されたキャンセル トークンを使用して、別のストリームに書き込みます。 どちらのストリーム位置も、コピーされたバイト数だけ進みます。
(継承元
Stream
)
指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、別のストリームに書き込みます。 どちらのストリーム位置も、コピーされたバイト数だけ進みます。
(継承元
Stream
)
指定されたバッファー サイズを使用して、現在のストリームからバイトを非同期に読み取り、指定されたバッファー サイズとキャンセル トークンを使用して、別のストリームに書き込みます。 どちらのストリーム位置も、コピーされたバイト数だけ進みます。
(継承元
Stream
)