例41ファイルストリームの読み取りと書き込み

FileStreamクラス

https://docs.microsoft.com/zh-cn/dotnet/api/system.io.filestream?view=netframework-4.8

名前空間:System.IO

アセンブリ:mscorlib.dll

ストリームをファイル提供し、同期読み取りおよび書き込み操作と非同期読み取りおよび書き込み操作の両方をサポートします 

コメント

FileStream  クラスを使用  して、ファイルシステムのファイルの読み取り、書き込み、オープン、クローズを行います。パイプ、標準入力、標準出力など、ファイルに関連する他のオペレーティングシステムハンドルを操作することもできます。あなたは使用することができます  読み取り書き込みCopyToのと  フラッシュ  同期、または使用する方法を  ReadAsyncをWriteAsynccopyToAsyncと  FlushAsync  メソッドを実行する非同期操作を。非同期メソッドを使用して、メインスレッドをブロックせずにリソースを集中的に使用するファイル操作を実行します。このパフォーマンスの考慮事項は、Windows 8.xアプリストアアプリケーションまたはデスクトップアプリケーションで時間のかかるストリーム操作がUIスレッドをブロックし、アプリケーションが機能していないように見える場合に特に重要です。 FileStreamは  入出力をバッファリングしてパフォーマンスを向上させます。

 重要な

このタイプは、IDisposable  インターフェイスを実装し  ます。タイプを使用した後、タイプを直接または間接的に解放する必要があります。型を直接解放するには、Disposetry /ブロックそのcatch メソッドを  呼び出します  型を間接的に解放するには、  言語構成体using(C#の場合)または  Using(Visual Basicの場合)を使用します。詳細について は、IDisposableインターフェイスのトピックの「IDisposableを実装するオブジェクトの使用」を参照してください 

IsAsync  プロパティは、ファイルハンドルが非同期で開かれたかどうかを検出します。持つ  isAsyncuseAsyncまたは  options パラメータのコンストラクタを作成  するFileStream  インスタンスクラスを、この値を指定することができます。true属性が指定されている場合  、ストリームは重複するi / oを使用して、ファイル操作を非同期で実行します。ただし、true IsAsync  属性 を指定しReadAsyncWriteAsync、または  CopyToAsyncメソッドを呼び出す  必要はありません  場合  false のisAsync  場合特性を非同期読み取りおよび書き込み操作を呼び出し、UIスレッドは依然としてブロックされませんが、動作O実際のI /同期して行われます。
Seek  メソッドは、ファイルへのランダムアクセスをサポートします。 Seek  では、読み取り/書き込み位置をファイル内の任意の位置に移動できます。これは、バイトオフセットによってポイントパラメータを参照することによって実現されます。バイトオフセットは、検索参照ポイントを基準にしています。これは、ベースファイルの開始、現在の位置、または終了であり、SeekOriginによって 列挙される3つのメンバーによって表され  ます。

      このクラスを使用する場合、まずこのクラスのインスタンス、つまりオブジェクトを定義し、このオブジェクトのプロパティとメソッドを使用してファイルの読み取りと書き込みを行う必要があります。ファイルストリームオブジェクトは次のように定義されます     。Dim
    オブジェクトAs FileStream
オブジェクト= NewFileStream(パス、モード、アクセス、共有、バッファーサイズ、isAsync)

    ファイルストリームコンストラクターの各パラメーター値の意味は次のとおりです。

  • パス、ファイルパス名:
  • モード、FileMode列挙型クラスプラウ、ファイルオープンモード。
  • FileAccess列挙型のAccessは、FileStreamオブジェクトがファイルにアクセスする方法を決定します。
  • 共有、FileShare列挙型、ファイル共有方法。
  • buffersize、必要なバッファーは小さいです。
  • isAsync、同期または非同期の入力および出力。

    FileStreamのコンストラクターは複数回オーバーロードすることができ、新しいファイルストリームオブジェクトを作成するときは、最初のいくつかのパラメーターのみを指定できます。

    FileMode列挙型の値は次のとおりです。

  • ファイルの最後に追加、追加します。
  • ファイルを作成、作成します。上書きできます。
  • CrcateNew、新しいファイルを作成します。

ファイルを開いて開きます。

  • OpenOrCreate、ファイルを開き、ファイルが存在しない場合は作成します。

    FileAccess列挙型の値は次のとおりです。

  • 読み取り、ファイルへのアクセスはファイルを読み取ることです。
  • ReadWrite、ファイルの読み取りと書き込み。
  • 書き込み、ファイルの書き込み。

    FileShare列挙型の値は次のとおりです。

  • 読み取り。他のユーザーがファイルを読み取ってアクセスできるようにします。
  • ReadWrite。他のユーザーがファイルへの読み取りおよび書き込みアクセスを許可します。
  • 書き込み。他のユーザーがファイルに書き込むことができます。

       ファイルストリームオブジェクトを定義した後、Readメソッドでファイルの内容を読み取り、Writeメソッドでファイルの内容を書き換えることができます。ReadメソッドとWriteメソッドには3つのパラメーターがあります。最初のパラメーターは配列で、ファイルから読み取られたデータまたはファイルに書き込まれた配列を表します。2番目のパラメーターは読み取りまたは書き込みの開始位置を表し、3番目のパラメーターはこの操作は、いくつかのデータを処理する必要があります。
    Closeメソッドを使用してファイルを閉じます。

モジュールModule1

    Sub Main()
        testStream()

        Console.Read()
    End Sub

    Private Sub testStream()
        Dim DataWrite(10)As Byte
        Dim DataRead(10)As Byte
        Dim i As Integer
        For i = 0 To 10
            DataWrite(i)= i * 3
        Next

        Dim testFs As IO.FileStream
        testFs = New IO.FileStream( "J:\ test \ Stream.txt"、IO.FileMode.OpenOrCreate、IO.FileAccess.Write)
        testFs.Write(DataWrite、
        0、11 testFs.Close( )

        testFs = New IO.FileStream( "J:\ test \ Stream.txt"、IO.FileMode.Open、IO.FileAccess.Read)
        testFs.Read(DataRead、
        0、11 testFs.Close()

        For i = 0 To 10
            Console.WriteLine(DataRead(i))
        Next
    End Sub
End Module
 

公開された146元の記事 ウォンの賞賛0 ビュー2727

おすすめ

転載: blog.csdn.net/ngbshzhn/article/details/105616070