次の方法で共有


方法 : Visual Basic でバイナリ ファイルを読み取る

My.Computer.FileSystem オブジェクトには、バイナリ ファイルを読み取るための ReadAllBytes メソッドが用意されています。

バイナリ ファイルを読み取るには

  • ReadAllBytes メソッドを使用します。このメソッドは、ファイルの内容をバイト配列として返します。 この例では、C:/Documents and Settings/selfportrait.jpg ファイルを読み取ります。

    Dim bytes = My.Computer.FileSystem.ReadAllBytes(
                  "C:/Documents and Settings/selfportrait.jpg")
    PictureBox1.Image = Image.FromStream(New IO.MemoryStream(bytes))
    
  • サイズの大きいバイナリ ファイルの場合は、FileStream オブジェクトの Read メソッドを使用して、一度に指定の量だけをファイルから読み取ることができます。 その後、各読み取り操作でファイルからメモリに読み込まれる量を制限することができます。 次のコード例では、ファイルをコピーし、各読み取り操作でファイルからメモリに読み込まれる量を呼び出し元が指定できるようにします。

    ' This method does not trap for exceptions. If an exception is  
    ' encountered opening the file to be copied or writing to the  
    ' destination location, then the exception will be thrown to  
    ' the requestor. 
    Public Sub CopyBinaryFile(ByVal path As String,
                              ByVal copyPath As String,
                              ByVal bufferSize As Integer,
                              ByVal overwrite As Boolean)
    
        Dim inputFile = IO.File.Open(path, IO.FileMode.Open)
    
        If overwrite AndAlso My.Computer.FileSystem.FileExists(copyPath) Then
            My.Computer.FileSystem.DeleteFile(copyPath)
        End If 
    
        ' Adjust array length for VB array declaration. 
        Dim bytes = New Byte(bufferSize - 1) {}
    
        While inputFile.Read(bytes, 0, bufferSize) > 0
            My.Computer.FileSystem.WriteAllBytes(copyPath, bytes, True)
        End While
    
        inputFile.Close()
    End Sub
    

信頼性の高いプログラミング

次の条件を満たす場合は、例外がスローされる可能性があります。

  • パスが無効である場合。1) 長さが 0 の文字列である、2) 空白だけが含まれている、3) 無効な文字が含まれている、4) デバイス パスである、のいずれかの理由が考えられる (ArgumentException)

  • パスが Nothing であるため、有効でない (ArgumentNullException)。

  • ファイルが存在しない (FileNotFoundException)

  • 他のプロセスがファイルを使用しているか、または I/O エラーが発生した (IOException)

  • パスがシステムで定義されている最大長を超えている (PathTooLongException)。

  • パス内のファイル名またはディレクトリ名にコロン (:) が含まれているか、または形式が無効である (NotSupportedException)

  • 文字列をバッファーに書き込むための十分なメモリがない (OutOfMemoryException)

  • ユーザーがパスを参照するのに必要なアクセス許可がない (SecurityException)

ファイル名からファイルの内容を判断しないでください。 たとえば、Form1.vb というファイルが Visual Basic のソース ファイルではない可能性もあります。

アプリケーションでデータを使用する前に、入力をすべて検証してください。 ファイルの内容が予想どおりでないことがあり、ファイルの内容を読み取るメソッドが失敗する可能性があります。

参照

処理手順

方法 : Visual Basic で複数の書式を持つテキスト ファイルを読み取る

関連項目

ReadAllBytes

WriteAllBytes

その他の技術情報

Visual Basic でのファイルの読み取り

クリップボードのデータの格納と読み取り (Visual Basic)