Open
 
Открывает файл на диске для чтения или записи с использованием файловых операций

Синтаксис

Open filename For Input [encoding_type] [lock_type] As [#]filenumber
Open filename For Output [encoding_type] [lock_type] As [#]filenumber
Open filename For Append [encoding_type] [lock_type] As [#]filenumber

Open filename For Binary [access_type] [lock_type] As [#]filenumber
Open filename For Random [access_type] [lock_type] As [#]filenumber [Len = record_length]

Использование

result = Open (filename, For {Input|Output|Append}, As filenumber )
или
result = Open (filename, For Binary, Access {Read|Write}, As filenumber )
или
result = Open (filename, For Random, Access {Read|Write}, As filenumber [, Len = record_length] )
или
Open filename For {Input|Output|Append} As filenumber
или
Open filename For Binary Access {Read|Write} As filenumber
или
Open filename For Random Access {Read|Write} As filenumber [Len = record_length]


Параметры

filename
Строковое значение имени файла на диске для открытия. Относительные пути к файлам являются относительно текущей директории (см. CurDir).
encoding_type
Кодировка , используемая при чтении или записи текста, может быть одной из:
      • Encoding "ascii" (Используется кодировка ASCII, по умолчанию)
      • Encoding "utf8" (Используется 8-битовая кодировка Unicode)
      • Encoding "utf16" (Используется 16-битовая кодировка Unicode)
      • Encoding "utf32" (Используется 32-битовая кодировка Unicode)
access_type
Запрашиваемый тип доступа вызывающим процессом.
      • Access [Read] [Write] (чтение и запись могут использоваться, по умолчанию)
lock_type
Накладывает ограничения на доступ к файлам диска из других процессов (потоков или программ), может быть:
      • Shared (Этот файл имеет свободный доступ для других процессов)
      • Lock [Read] [Write] (чтение и запись могут быть отказаны для других процессов)
filenum
Доступный файловый номер для привязки файла на диске, который можно найти с помощью FreeFile.
record_length
Размер, в байтах, каждой считываемой записи или записываемой в файл на диске. Значение по умолчанию — 128.

Возвращаемое значение

В первом использовании, Open возвращает ноль (0) в случае успешного завершения и ненулевой код ошибки в противном случае.

Описание

Открывает файл на диске для чтения и/или записи. Номер файла file_num связан с файлом на диске, для использования в последующих файловых операциях, таких как Input # и Lock. Следующий доступный номер файла может быть получен с помощью FreeFile.

Файловые режимы Input, Output и Append открывают файл диска для последовательного текстового ввода/вывода, полезно для чтения или записи текстовых файлов. Когда указан режим Input, только операции чтения файлов можно использовать, такие как Line Input # и Get #. Если файл на диске не существует , будет сгенерирована ошибка выполнения. Режим Output  определяет, что только операции записи могут быть использованы, например, Print # и Put #. Если файл на диске не существует, он создается пустым. Режим Append как режим Output за исключением того, что операции записи начнутся в конце файла на диске, если он существует.

Файловые режимы Input, Output и Append также позволяют выбор кодировки символов, которая будет использоваться при чтении или записи текста в файл на диске. ASCII или Unicode кодировка может быть определена (см. описание параметра encoding_type).

Файловые режимы Binary и Random открывают файлы на диске для произвольного доступа чтения или записи произвольного размера двоичных данных. Файловый режим Binary позволяет чтение и запись значений типа данных, таких как Byte или LongInt с помощью двоичных операций чтения и записи, таких как Get #. LOC и Seek используются для чтения и записи в произвольные места в файле на диске. Файловый режим Random  похож на Binary, за исключением того, что файловые операции ввода-вывода всегда используют размер постоянных данных при считывании или записи.

Файловые режимы Binary и Random позволяют не только читать и писать в открытом файле на диске, но так же позволяют указать тип доступа (см. описание для параметра access_type).

Для любого файлового режима, доступ к открытому файлу на диске может быть ограничен или предоставлен для других потоков или программ, указав тип блокировки (см. описание для параметра lock_type). Если тип блокировки не указан, другие потоки из текущей программы могут свободно открыть файл на диске (Shared), в то время как другие программы не могут (Lock Read Write). Lock и Unlock могут быть использованы, чтобы временно ограничить доступ к части файла.

Код ошибки, возвращенный Open можно проверить с помощью Err в следующей строке. Версия функции Open возвращает непосредственно код ошибки в виде Integer.

Пример

' Создать строку и заполнить ее.
Dim buffer As String, f As Integer
buffer = "Hello World within a file."

' Найти первый свободный номер файла.
f = FreeFile

' Открываем файл "file.ext" для бинарного использования, используя номер файла "f".
Open "file.ext" For Binary As #f
If Err>0 Then Print "Error opening the file":End

' Поместим нашу строку в файл, используя номер "f".
Put #f, , buffer

' Закроем все открытые файлы.  
Close

' Завершим работу программы. (Проверьте файл "file.ext" после запуска, чтобы увидеть вывод.)
End


'Открываем COM порт
Open Com "COM1:9600,N,8,1" As #1
If Err>0 Then Print "The port could not be opened."

'COM1, 9600 скорость передачи данных, без четности бит, восемь битов данных, 1 бит остановки.

'версия функции OPEN
If Open("file.ext" For Binary Access Read As #1) = 0 Then

    Print "Successfully opened file"

    '' ...

    Close #1

Else

    Print "Error opening file"

End If


Различия платформ

  • Linux требует чтобы filename  соответствовало реальному имени файла. Windows и DOS не чувствительны к регистру.
  • Разделители пути в Linux являются левой косой чертой /. Windows использует обратную косую черту \ но позволяет и прямой слеш /. DOS использует обратную косую черту \.
  • В Windows, номер файла, используемый в динамической библиотеке не то же самый, как указанный с таким же номером в основной программе. Номера файлов не могут быть переданы или возвращены, а затем использоваться между DLL и исполняемым файлом.
  • При попытке открыть каталог на Linux, команда Open успешна.

Отличия от QB

  • Использование имен устройств MS-DOS, чтобы открыть потоки или аппаратные устройства ("LPT:", "SCR:", и т.д..) поддерживается только в диалекте -lang qb; для других должны использоваться новые композитные ключевые слова FreeBASIC : см. Open Com, Open Cons, Open Err, Open Pipe, Open Lpt, Open Scrn.
  • Open может быть функцией, которая возвращает код ошибки.

Различия диалектов

  • Диалект -lang qb поддерживает старый синтаксис GW-BASIC OPEN mode_string, #filenum, filename [length] с mode_string : "I" для Input, "O" для Output, "A" для append, "R" для random, "B" для binary.

См. также