FileOpen 関数
更新 : 2007 年 11 月
ファイルを開いて入出力を行います。
My 機能を使用すると、FileOpen を使用するよりもファイル I/O 処理の生産性とパフォーマンスが格段に向上します。詳細については、「My.Computer.FileSystem オブジェクト」を参照してください。
Public Sub FileOpen( _
ByVal FileNumber As Integer, _
ByVal FileName As String, _
ByVal Mode As OpenMode, _
Optional ByVal Access As OpenAccess = OpenAccess.Default, _
Optional ByVal Share As OpenShare = OpenShare.Default, _
Optional ByVal RecordLength As Integer = -1 _
)
パラメータ
FileNumber
必ず指定します。有効なファイル番号です。FreeFile 関数を使用して、使用できる次のファイル番号を取得します。FileName
必ず指定します。ファイル名を指定する文字列 (String) 式です。ディレクトリ名またはフォルダ名、およびドライブ名も含めて指定できます。Mode
必ず指定します。ファイル モード (Append、Binary、Input、Output、または Random) を指定する列挙体です。詳細については、「OpenMode 列挙型」を参照してください。Access
省略可能です。開いているファイルに対して許可された操作 (Read、Write、または ReadWrite) を指定する列挙体です。既定値は ReadWrite です。詳細については、「OpenAccess 列挙型」を参照してください。Share
省略可能です。開いているファイルに対する、他のプロセスによる許可されない操作 (Shared、Lock Read、Lock Write、および Lock Read Write) を指定する列挙体です。既定値は Lock Read Write です。詳細については、「OpenShare 列挙型」を参照してください。RecordLength
省略可能です。32,767 バイト以下の数値。ランダム アクセス ファイルの場合は、レコード長を表します。シーケンシャル ファイルの場合は、バッファの容量を表します。
例外
例外の種類 |
エラー番号 |
条件 |
---|---|---|
Access、Share、または Mode が無効です。 |
||
WriteOnly のファイルが Input で開かれています。 |
||
ReadOnly のファイルが Output で開かれています。 |
||
ReadOnly のファイルが Append で開かれています。 |
||
レコード長が、-1 ではない負の値です。 |
||
FileNumber が無効です (< -1 または > 255)。または FileNumber が既に使われています。 |
||
FileName が既に開かれています。または FileName が無効です。 |
非構造化エラー処理を使用する Visual Basic 6.0 アプリケーションをアップグレードする場合は、"エラー番号" の列を参照してください(エラー番号を Number プロパティ (Err オブジェクト) と比較することもできます)。ただし、可能であれば、このようなエラー制御は Visual Basic の構造化例外処理の概要 に置き換えることを検討してください。
解説
FileOpen 関数は下位互換性のために提供されており、パフォーマンスを低下させる可能性があります。非レガシ アプリケーションに対しては、My.Computer.FileSystem オブジェクトを使用した方が、パフォーマンスが高くなります。詳細については、「Visual Basic におけるファイル アクセス」を参照してください。
ファイルに対して I/O 処理を実行するには、その前にファイルを開く必要があります。FileOpen はファイルへの I/O 用にバッファを割り当て、そのバッファでどのアクセス モードを使用するかを判断します。
セキュリティに関するメモ : |
---|
ファイルへの書き込みを行うとき、書き込み先のファイルが存在しなければ、アプリケーションでファイルを作成することが必要になる場合もあります。その処理を行うには、ファイルの作成先となるディレクトリへのアクセス許可が必要です。ただし、FileName で指定されたファイルが存在すると、アプリケーションに必要な権限は、ファイルそのものだけへの Write アクセス許可になります。できれば、配置時にファイルを作成し、ディレクトリ全体ではなくそのファイルだけへの Write アクセス許可を与える方が安全です。安全性を高めるために、ルート ディレクトリや Program Files ディレクトリではなく、ユーザー ディレクトリへデータを書き込むようにしてください。 |
開くチャネルは、FreeFile() 関数を使って検索できます。
セキュリティに関するメモ : |
---|
FileOpen 関数には FileIOPermissionAccess 列挙体の Readアクセスが必要です。ただし、部分的に信頼されている状況でこれを使用すると、プログラムの実行に影響を及ぼす場合があります。詳細については、FileIOPermissionAccess 列挙体および「アクセス許可の要求」を参照してください。 |
使用例
FileOpen 関数を使ってファイルへの入出力を可能にする、さまざまな例を示します。
ファイル TestFile を Input モードで開くコード例は、次のとおりです。
FileOpen(1, "TESTFILE", OpenMode.Input)
' Close before reopening in another mode.
FileClose(1)
ファイルを書き込み専用の Binary モードで開く例を次に示します。
FileOpen(1, "TESTFILE", OpenMode.Binary,OpenAccess.Write)
' Close before reopening in another mode.
FileClose(1)
ファイルを Random モードで開く例を次に示します。ファイルには、構造体 Person のレコードが含まれているものと仮定します。
Structure Person
<VBFixedString(30)> Dim Name As String
Dim ID As Integer
End Structure
Public Sub ExampleMethod()
' Count 30 for the string, plus 4 for the integer.
FileOpen(1, "TESTFILE", OpenMode.Random, , , 34)
' Close before reopening in another mode.
FileClose(1)
End Sub
ファイルを Output モードで開く例を次に示します。どのプロセスからでも、ファイルの読み書きができます。
FileOpen(1, "TESTFILE", OpenMode.Output, OpenAccess.Default, OpenShare.Shared)
' Close before reopening in another mode.
FileClose(1)
ファイルを読み込み専用の Binary モードで開く例を次に示します。他のプロセスから、このファイルを読むことはできません。
FileOpen(1, "TESTFILE", OpenMode.Binary, OpenAccess.Read, _
OpenShare.LockRead)
スマート デバイス開発者のためのメモ
この関数はサポートされていません。
必要条件
名前空間 : Microsoft.VisualBasic
モジュール : FileSystem
アセンブリ : Visual Basic ランタイム ライブラリ (Microsoft.VisualBasic.dll)