Функция FileOpen
Обновлен: Ноябрь 2007
Открывает файл для ввода или вывода.
Функция My обеспечивает большую производительность и быстродействие в операциях файлового ввода-вывода, чем FileOpen. Дополнительные сведения см. в разделе Объект 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 (байт). Для файлов, открытых для произвольного доступа, это значение является длиной записи. Для последовательных файлов — это число символов в буфере.
Исключения
Тип исключения |
Номер ошибки |
Условие |
---|---|---|
Недопустимое ключевое слово AccessShare или 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.
Файл необходимо открыть перед выполнением какой-либо операции файлового ввода-вывода. FileOpen выделяет буфер для ввода-вывода в файле и определяет режим доступа к используемому буферу.
Примечание о безопасности. |
---|
При записи в файл приложению может потребоваться создать файл, если файла, в который выполняется запись, не существует. Для этого приложению требуется разрешение на доступ к каталогу, в котором необходимо создать файл. Однако если файл, указанный в параметре FileName, существует, приложению требуется разрешение Write только для самого файла. Из соображений безопасности, если такая возможность существует, рекомендуется создавать файл во время развертывания и предоставлять разрешение Write только для этого файла, а не для всего каталога. Для повышения безопасности записывайте данные в каталоги пользователей, а не в корневой каталог или каталог Program Files. |
Номер открываемого канала можно найти с помощью функции FreeFile().
Примечание о безопасности. |
---|
Для функции FileOpen требуется доступ Read из перечисления FileIOPermissionAccess, что может повлиять на ее выполнение в случаях частичного доверия. Дополнительные сведения см. в перечислении 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)