Share via


FileSystem.FileOpen 方法

定義

開啟要當做輸入或輸出的檔案。 相較於 FileOpenMy 功能可提升檔案 I/O 作業的產能和效能。 如需詳細資訊,請參閱FileSystem

public static void FileOpen (int FileNumber, string FileName, Microsoft.VisualBasic.OpenMode Mode, Microsoft.VisualBasic.OpenAccess Access = Microsoft.VisualBasic.OpenAccess.Default, Microsoft.VisualBasic.OpenShare Share = Microsoft.VisualBasic.OpenShare.Default, int RecordLength = -1);
static member FileOpen : int * string * Microsoft.VisualBasic.OpenMode * Microsoft.VisualBasic.OpenAccess * Microsoft.VisualBasic.OpenShare * int -> unit
Public Sub FileOpen (FileNumber As Integer, FileName As String, Mode As OpenMode, Optional Access As OpenAccess = Microsoft.VisualBasic.OpenAccess.Default, Optional Share As OpenShare = Microsoft.VisualBasic.OpenShare.Default, Optional RecordLength As Integer = -1)

參數

FileNumber
Int32

必要。 任何有效的檔案數目。 使用 FreeFile 函式取得下一個可用的檔案編號。

FileName
String

必要。 字串運算式,可指定檔名,也可能包括目錄或資料夾與磁碟機。

Mode
OpenMode

必要。 指定檔案模式的列舉類型:AppendBinaryInputOutputRandom 如需詳細資訊,請參閱OpenMode

Access
OpenAccess

選擇性。 指定開啟檔案上允許的作業之列舉類型:ReadWriteReadWrite。 預設值為 ReadWrite。 如需詳細資訊,請參閱OpenAccess

Share
OpenShare

選擇性。 指定開啟的檔案上其他處理序不允許之作業的列舉類型:SharedLock ReadLock WriteLock Read Write。 預設值為 Lock Read Write。 如需詳細資訊,請參閱OpenShare

RecordLength
Int32

選擇性。 數字小於或等於 32,767 (位元組)。 對於為隨機存取開啟的檔案而言,這個值是資料錄長度。 對於循序檔案而言,這個值是緩衝的字元數。

例外狀況

資料錄的長度為負數 (而且不等於 -1)。

FileName 已經開啟,或 FileName 無效。

範例

本範例說明函式的各種 FileOpen 用法,以啟用檔案的輸入和輸出。

下列程式代碼會以Input模式開啟檔案TestFile

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)

備註

FileOpen 式是針對回溯相容性而提供,而且可能會影響效能。 針對非舊版應用程式, My.Computer.FileSystem 物件可提供更佳的效能。 如需詳細資訊,請參閱 Visual Basic 的檔案存取

您必須在檔案上執行任何 I/O 作業之前開啟檔案。 FileOpen 將 I/O 的緩衝區配置給檔案,並決定要與緩衝區搭配使用的存取模式。

重要

寫入檔案時,如果嘗試寫入的檔案不存在,應用程式可能必須建立檔案。 若要這樣做,它需要檔案建立所在的目錄許可權。 不過,如果 指定的 FileName 檔案存在,應用程式 Write 只需要檔案本身的許可權。 盡可能協助改善安全性,請在部署期間建立檔案,並只授與該檔案的許可權,而不是授 Write 與整個目錄。 為了協助改善安全性,請將數據寫入用戶目錄,而不是寫入根目錄或 Program Files 目錄。

您可以使用 函式找到要開啟的 FreeFile() 通道。

重要

FileOpen 式需要 Read 從列舉存取 FileIOPermissionAccess ,這可能會影響其在部分信任情況下的執行。 如需詳細資訊,請參閱 FileIOPermissionAccess 列舉。

適用於

另請參閱