Флаги открытия файлов
Значения флагов, определяющих режим работы с файлом. Флаги определены следующим образом:
|
Значение
|
|
FILE_READ
|
1
|
Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ
|
FILE_WRITE
|
2
|
Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ
|
FILE_BIN
|
4
|
Двоичный режим чтения-записи (без преобразования из строки и в строку). Флаг используется при открытии файлов (FileOpen())
|
FILE_CSV
|
8
|
Файл типа csv (все записанные элементы преобразуются к строкам соответствующего типа, unicode или ansi, и разделяются разделителем). Флаг используется при открытии файлов (FileOpen())
|
FILE_TXT
|
16
|
Простой текстовый файл (тот же csv, однако разделитель не принимается во внимание). Флаг используется при открытии файлов (FileOpen())
|
FILE_ANSI
|
32
|
Строки типа ANSI (однобайтовые символы). Флаг используется при открытии файлов (FileOpen())
|
FILE_UNICODE
|
64
|
Строки типа UNICODE (двухбайтовые символы). Флаг используется при открытии файлов (FileOpen())
|
FILE_SHARE_READ
|
128
|
Совместный доступ по чтению со стороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытии файла необходимости указать FILE_WRITE и/или флаг FILE_READ
|
FILE_SHARE_WRITE
|
256
|
Совместный доступ по записи со стороны нескольких программ. Флаг используется при открытии файлов (FileOpen()), но не заменяет при открытии файла необходимости указать FILE_WRITE и/или флаг FILE_READ
|
FILE_REWRITE
|
512
|
Возможность перезаписывания файла функциями FileCopy() и FileMove(). Файл должен существовать или открываться для записи. В противном случае файл открыт не будет
|
FILE_COMMON
|
4096
|
Расположение файла в общей папке всех клиентских терминалов \Terminal\Common\Files. Флаг используется при открытии файлов (FileOpen()), копировании файлов (FileCopy(), FileMove()) и проверке существования файлов (FileIsExist())
|
При открытии файла можно указать один или более флагов, такое сочетание называется комбинацией флагов. Комбинация флагов записывается с помощью знака операции логического ИЛИ (|), который ставится между перечисляемыми флагами. Например, чтобы открыть файл в формате CSV одновременно на чтение и на запись, можно указать комбинацию FILE_READ|FILE_WRITE|FILE_CSV.
Пример:
int filehandle=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_CSV); |
Есть некоторые особенности работы при указании флагов чтения и записи:
- Если указан FILE_READ – делается попытка открытия уже существующего файла. Если файл не существует, то открыть файл не получится, новый файл не создается.
- Если FILE_READ|FILE_WRITE – создаётся новый файл если файл с таким именем отсутствует.
- Если FILE_WRITE – файл создается заново с нулевым размером.
При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ.
Флаги, определяющие тип чтения открытого файла, имеют приоритет. Самый старший флаг FILE_CSV, затем следует по старшинству флаг FILE_BIN, и наименьший приоритет имеет флаг FILE_TXT. Таким образом, если вдруг будут указаны сразу несколько флагов (FILE_TXT|FILE_CSV или FILE_TXT|FILE_BIN или FILE_BIN|FILE_CSV), то будет использован самый старший по приоритету флаг.
Флаги, определяющие тип кодировки, также имеют приоритет. Флаг FILE_UNICODE имеет более старший приоритет,чем флаг FILE_ANSI. Поэтому при указании комбинации FILE_UNICODE|FILE_ANSI будет использоваться флаг FILE_UNICODE.
Если не указано ни FILE_UNICODE, ни FILE_ANSI, то подразумевается FILE_UNICODE. Если не указано ни FILE_CSV, ни FILE_BIN, ни FILE_TXT, то подразумевается FILE_CSV.
Если файл открыт на чтение как текстовый (FILE_TXT или FILE_CSV), и при этом в начале файла будет обнаружен специальный двухбайтовый признак 0xff,0xfe, то флаг кодировки будет FILE_UNICODE, даже если указан флаг FILE_ANSI.
Смотри также
Файловые операции