Создание, удаление и переименование файлов
В этом разделе рассматривается: fd.create, fd.rename, fd.delete, fd.getnumfiles, fd.maxstoredfiles.
Пока не создан хотя бы один файл, ничего полезного с флеш-диском не сделать. Для этого служит метод fd.create. Строка, передаваемая в качестве аргумента, должна содержать имя файла и может также содержать атрибуты. Несколько примеров:
If fd.create("File1.dat R 25-JUL-2008")<>PL_FD_STATUS_OK Then ' <File1.dat> is the file name, <R 25-JUL-2008> -- attributes.
'some problem
End If
If fd.create(" File2")<>PL_FD_STATUS_OK Then 'no attributes defined for this file. Notice leading spaces -- they will be removed.
'some problem
End If
If fd.create("Database/users.dat")<>PL_FD_STATUS_OK Then 'and here we emulate a directory
'some problem
End If
If fd.create("file 3")<>PL_FD_STATUS_OK Then 'if the idea was to create a <file 3> file, then this won't work! "3" will be interpreted as attributes!
'some problem
End If
Естественно, каждый файл на флеш-диске должен иметь уникальное имя, иначе будет выдан код состояния 5 - PL_FD_STATUS_DUPLICATE_NAME. Каждому существующему файлу всегда выделен как минимум один сектор данных, поэтому при создании нового файла может возникнуть ошибка 7 - PL_FD_STATUS_DATA_FULL. Наконец, общее число файлов на флеш-диске ограничено значением, заданным при форматировании диска. Этот максимум можно проверить через свойство fd.maxstoredfiles (только чтение). При попытке превысить его будет выдан код ошибки 6 - PL_FD_STATUS_FILE_TABLE_FULL. Текущее число файлов можно получить через fd.getnumfiles.
Чтобы удалить файл, используйте метод fd.delete:
If fd.delete("File1.dat")<>PL_FD_STATUS_OK Then
'some problem
End If
If fd.delete("File2 abc")<>PL_FD_STATUS_OK Then 'the "abc" part will be ignored -- everything after the space is NOT a part of the file name
'some problem
End If
If fd.delete(" Database/users.dat")<>PL_FD_STATUS_OK Then 'leading spaces will be ignored
'some problem
End If
Удаляемый файл, разумеется, должен существовать, иначе будет выдан код состояния 9 - PL_FD_STATUS_NOT_FOUND. Файл можно также переименовать методом fd.rename (при этом атрибуты файла сохраняются). Удалять или переименовывать файл, который сейчас открыт, можно.
Методы fd.create, fd.rename и fd.delete изменяют секторы флеш-диска. Для максимальной надёжности вызывайте эти методы в рамках дисковых транзакций.