Create_File

File ››
Parent Previous Next

Create_File

Синтаксис

Function Create_File(ByRef FileName As String,ByVal flag As Integer=FILE_ATTRIBUTE_NORMAL) As HANDLE

Описание

Создает файл для записи и чтения, вне зависимости от того, существует или нет такой файл на диске.

Параметры

FileName - Имя файла с полным путем

flag - только для Windows , смотрите ниже

Платформы

Windows , Linux

Пример

#Include "window9.bi"
Var handle=Create_File("98765.txt")
If handle <> cast(any ptr,-1) Then
  Write_Byte(handle,56)
  Write_Byte(handle,47)
EndIf
Close_file(handle)
handle=Read_file("98765.txt")
If handle <> cast(any ptr,-1) Then
  ? Read_Byte(handle)
EndIf
Close_file(handle)
Sleep

Результат

56

 

Флаги и атрибуты файла.
Этот параметр может содержать любую комбинацию файловых атрибутов. Все другие файловые атрибуты перезаписывают FILE_ATTRIBUTE_NORMAL.
Когда CreateFile открывает файл, атрибуты файла комбинируются с существующими атрибутами файла, и игнорируются любые запрошенные файловые атрибуты.
Следующие файловые атрибуты и флаги используются только для файловых объектов, а не для других типов объектов, которые создает CreateFile.

FILE_ATTRIBUTE_ARCHIVE

- Файл может быть заархивирован. Приложение использует этот атрибут для пометки файлов для резервного копирования или перемещения.


FILE_ATTRIBUTE_ENCRYPTED

- Фал или дериктория зашифрованы. Для файла, это означает, что все данные в файле зашифрованы. Для директории, это означает, что шифрование применяется по умолчанию для новосозданных файлов и поддиректорий.
Этот флаг не имеет эффекта, если также установлен FILE_ATTRIBUTE_SYSTEM.


FILE_ATTRIBUTE_HIDDEN

- Файл спрятан (скрыт).


FILE_ATTRIBUTE_NORMAL

- Файл не имеет других установленных атрибутов. Этот атрибут действителен, если он установлен одним.


FILE_ATTRIBUTE_NOT_CONTENT_INDEXED

- Файл не индексируется контекстом сервиса индексирования.


FILE_ATTRIBUTE_OFFLINE

- Данные файла не являются немедленно достижимыми. Этот атрибут указывает, что данные файла физически перемещены на внешнее хранилище. Приложение не может произвольно изменять этот атрибут.


FILE_ATTRIBUTE_READONLY

- Файл только для чтения. Приложение может читать из файла, но не может записываеть в него, или его удалить.


FILE_ATTRIBUTE_SYSTEM

- Файл – это часть или используется исключительно операционной системой.


FILE_ATTRIBUTE_TEMPORARY

- Файл будет использован для временного хранения. Файловая система избегает записи данных назад в хранилище, если имеется в распоряжении достаточно кэша, потому что приложение удаляет временный файл после того, как дескриптор закрывается. В этом случае, система может всецело избежать записи данных. В другом случае, данные записываются после закрытия дескриптора.


Этот параметр может также содержать любую комбинацию следующих флагов:

FILE_FLAG_BACKUP_SEMANTICS

- Файл будет открыт или создан для операции резервного сохранения или восстановления. Система гарантирует, что вызывающий процесс не принимает во внимание проверку безопасности файла, когда процесс имеет привилегии SE_BACKUP_NAME и SE_RESTORE_NAME.
Вы можете установить этот флаг, получив дескриптор директории. Дескриптор директории может быть передан некоторым функциям вместо файлового дескриптора.
Windows Me/98/95: Этот флаг не поддерживается.


FILE_FLAG_DELETE_ON_CLOSE

- Система удаляет файл сразу, когда все его дескрипторы будут закрыты, учитывая указанный дескриптор и любые откртые или скопированные дескрипторы.
Если существует открытые дескриптор файла, вызов функции будет не успешен, если только они (дескрипторы) не имеют режим разделяемости FILE_SHARE_DELETE.
Последовательные запросы на открытие для файла будут неудачны, если не указан режим разделяемости FILE_SHARE_DELETE.


FILE_FLAG_NO_BUFFERING

- Система открывает файл без системного кэширования. Этот флаг не эффективен в кэшировании жесткого диска. Если он комбинирован с FILE_FLAG_OVERLAPPED, флаг дает максимальную производительность ассинхронности потому, что вв/выв не полагается на синхронные операции менеджера памяти. Тем не менее, некоторые операции вв/выв забирают больше времени потому, что данные не сохранены в кэше. Также, метаданные файла могут все еще кэшироваться. Для сброса метаданных на диск, используйте функцию FlushFileBuffers.
Приложение должно удовлевотворять определенным условиям когда работает с файлами, открытыми с флагом FILE_FLAG_NO_BUFFERING:
Файловый доступ должен начинаться с байтового смещения внутри файла, которое имет целочислительную кратность с размером сектора раздела.
Файловый доступ должен быть количеством байт, которое имет целочислительную кратность с размером сектора раздела. Например, если размер сектора 512 байт, приложение может затребовать чтение и записть 512, 1024, или 2048 байт, но не 335, 981, или 7171 байт.
Адреса буфера для чтения или записи должны быть выровнены по сектору, что означает выравнивание по адресам памяти, которые имеют целочислительную кратность с размером сектора раздела. В зависимости от диска, это требование может быть не задействовано.
Одним способом выровнять буферы по целочислительной кратности с размером сектора раздела, является использование VirtualAlloc для выделения буферов. Она выделяет память, которая выровнена по адресам, имеющим целочислительную кратность с размером страницы памяти операционной системы. Так как размеры страницы памяти и сектора раздела выравниваются одинаково.
Приложение может получить размер сектора раздела, вызвав функцию GetDiskFreeSpace.

FILE_FLAG_OPEN_NO_RECALL

- Данные файла были затребованы, но должно продолжаться их устраивание на удаленном хранилище. Этот флаг для использования системой удаленного хранения.


FILE_FLAG_OPEN_REPARSE_POINT

- Система препятствует поведению возмещения файлововой системы NTFS точек препятствия. Этот флаг не может использоваться с флагом CREATE_ALWAYS.


FILE_FLAG_OVERLAPPED

- Файл будет открыт или создан для ассинхронного вв/выв. Когда операция завершена, событие указанное к вызову в структуре OVERLAPPED, устанавливается в сигнальное состояние. Операции, которые требуют много количества времени процессу, возвращают ERROR_IO_PENDING.
Если указан этот флаг, файл может быть использован для одновременных операций чтения и записи. Система не изменяет файловый указатель – вы сами должны это делать, передавая файловую позицию к функциям чтения и записи в структуре OVERLAPPED, или обновлять файловый указатель.
Если этот флаг не указан, тогда операции вв/выв являются серийными, даже если в вызовах функций чтения и записи определена структура OVERLAPPED.


FILE_FLAG_POSIX_SEMANTICS

- Доступ к файлу осуществляется по правилам POSIX. При этом учитывается регистр символов в имени файла, для файловых систем, которые учитывают такие имена. Используйте с осторожностью эту опцию потому, что создание файлов с этим флагом может быть не доступно приложениям, которые написаны для MS-DOS или 16-битного Windows.


FILE_FLAG_RANDOM_ACCESS

- Доступ к файлу непоследователен. Система может использовать это как подсказку при кэшировании файла.


FILE_FLAG_SEQUENTIAL_SCAN

- Доступ к файлу последователен от начала до конца. Система может использовать это как подсказку при кэшировании файла. Если приложение передвигает файловый указатель для произвольного доступа, оптимальное кэширование не происходит. Тем не менее, корректность операции гарантируется.
Установив этот флаг, можно подвысить производительность приложения, которое последовательно читает большие файлы.


FILE_FLAG_WRITE_THROUGH

- Система записывает мимо любого промежуточного кэша прямо на диск.
Если также установлен флаг FILE_FLAG_NO_BUFFERING, систеное кэширование эффективно так, что данные записываются в системный кэш, но сбрасываются на диск без замедления.


Параметр dwFlagsAndAttributes может также содержать Качества Безопасности. Когда вызывающее приложение определяет флаг SECURITY_SQOS_PRESENT, параметр dwFlagsAndAttributes может принимать одно или более из следующих значений:

SECURITY_ANONYMOUS

- Испольнять роль клиента в уровне анонимности.


SECURITY_CONTEXT_TRACKING

- Режим выслеживания безопасности динамичен. Если этот флаг не указан, режим выслеживания безопасности статичен.


SECURITY_DELEGATION

- Испольнять роль клиента в уровне делегации.


SECURITY_EFFECTIVE_ONLY

- Допустить только аспекты контекста безопасности клиента допустимыми на сервере. Если вы не устанавливаете этот флаг, все аспекты контекста безопасности клиента доступны.
Это позволяет клинету ограничивать группы и привилегии, которы сервер может использовать исполняющий роль клиента.


SECURITY_IDENTIFICATION

- Испольнять роль клиента в уровне опознавания.


SECURITY_IMPERSONATION

- Испольнять роль клиента в уровне испольняющего роль.

Created with the Personal Edition of HelpNDoc: Easily create EBooks