Ввод-вывод ====================================================================== Работа с файлами ---------------------------------------------------------------------- Путь `````````````````````````````````````````````````````````````````````` .. pas:function:: GetTempFileName(prefix, suffix: String): String Метод возвращает уникальное имя файла во временном каталоге. :param String prefix: Префикс имени файла :param String suffix: Окончание имени файла с расширением :rtype: String .. seealso:: * :pas:meth:`GetTempDirectory` .. pas:function:: GetTempDirectory(): String Метод возвращает путь к временному каталогу. Путь формируется :ref:`плагином Gs3-browser-cmd ` из пути до временного каталога операционной системы и вложенных подпапок "GlobalSystem" и "gs3-browser-cmd". Если указанные подпапки отсутствуют, они будут созданы автоматически. :rtype: String .. attention:: * Для корректной работы метода требуется установленный :ref:`плагин Gs3-browser-cmd ` версии 0.19.3.2 и выше .. pas:function:: ExtractFileName(sFileName: String): String Выделяет имя файла из полного имени файла :param String sFileName: Полное имя файла. :rtype: String .. pas:function:: ExtractFileExt(sFileName: Variant): String Выделяет расширение файла (с точкой в начале) из имени файла. :param Variant sFileName: Имя файла. :rtype: String .. pas:function:: ExtractFileDir(sFileName: String): String Выделяет каталог из полного имени файла :param String sFileName: Полное имя файла. :rtype: String Модификация каталогов `````````````````````````````````````````````````````````````````````` .. pas:function:: MkDir(S: String) Создает новую субдиректорию. :param String S: Имя директории. .. warning:: Не реализовано .. pas:function:: RemoveDir(sPath: String): Variant Удаляет пустой каталог. Возвращает **True**, если результат операции успешен. :param String sPath: Имя каталога (полное). :rtype: Variant .. warning:: Не реализовано .. pas:function:: RemoveDirEx(sPath: String; bFlag: Boolean): Boolean Удаляет каталог. Возвращает **True**, если результат операции успешен. :param String sPath: Имя каталога (полное). :param Boolean bFlag: Режим удаления каталога, если **True**, каталог будет удален вместе с подкаталогами и файлами, если **False**, то действие аналогично ``RemoveDir``. :rtype: Boolean .. warning:: Не реализовано .. pas:function:: DeleteFile(FileName: String): Boolean Удаляет файл с именем *FileName*. Возвращает **True**, если результат операции успешен :param String FileName: Имя файла. :rtype: Boolean .. warning:: Не реализовано .. pas:function:: RenameFile(OldName, NewName: String): Variant Переименовывает файл. Возвращает **True**, если результат операции успешен. :param String OldName: Полное старое имя файла. :param String NewName: Полное новое имя файла. :rtype: Variant .. warning:: Не реализовано Информация и каталогах `````````````````````````````````````````````````````````````````````` .. pas:function:: DirectoryExists(Path: String): Variant Проверяет существование каталога с именем **Path**. :param String Path: Каталог. :rtype: Variant .. warning:: Не реализовано .. pas:function:: FileExists(FileName: String): Boolean Проверяет существование файла с именем *FileName*. :param String FileName: Полное имя файла (с именем диска и каталога). :rtype: Boolean .. warning:: Не реализовано .. pas:function:: GetFileDateTime(FileName: String): TDateTime Функция возвращает дату создания файла. :param String FileName: Полное имя файла. :rtype: TDateTime .. code-block:: delphi :caption: Пример использования FileName := 'TEST.doc'; If FileExists(FileName) then ShowMessage(DateTimeToStr(GetFileDateTime(FileName))); .. warning:: Не реализовано .. pas:function:: FileSize(sFileName: Variant): Integer Возвращает размер файла в байтах. :param Variant sFileName: Полное имя файла (с именем диска и каталога). :rtype: Integer .. warning:: Не реализовано .. pas:function:: GetDirFileList(Path: String): Array Функция возвращает массив файлов (полные имена) входящих в каталог *Path*. :param String Path: Имя каталога (полное). :rtype: Array .. attention:: * Для корректной работы метода требуется установленный :ref:`плагин Gs3-browser-cmd ` версии 0.19.4 и выше Загрузка/Сохранение `````````````````````````````````````````````````````````````````````` .. pas:function:: LoadFromFile(FileName: String): String Загружает текст из файла в кодировке utf-8. Функция возвращает содержимое файла. Для загрузки в других кодировках подойдет метод :pas:meth:`LoadTextFromFile`. :param String FileName: Имя файла. :rtype: String .. attention:: * Для корректной работы метода требуется установленный :ref:`плагин Gs3-browser-cmd ` .. code-block:: delphi :caption: Пример использования str := LoadFromFile('D:\utf8file_in.txt'); // Загружаем utf-8(unicode) файл ShowMessage(str); // Выводим загруженную строку .. seealso:: * :pas:meth:`LoadTextFromFile` * :pas:meth:`LoadFromFileToBlob` * :pas:meth:`TbtkScriptSelectionObject.LoadFieldFromFile` .. pas:function:: LoadTextFromFile(FileName: String; Encoding: Integer): String Функция загружает и возвращает текст из файла с указанной :term:`кодировкой<Кодировка>` *Encoding* преобразуя в текст с текущей скриптовой кодировкой (ANSI). :param String FileName: Имя файла. :param Integer Encoding: Кодировка файла. * 437 - OEM United States * 855 - OEM Cyrillic (primarily Russian) * 866 - OEM Russian; Cyrillic (DOS) * 1200 - UTF-16 LE * 1201 - UTF-16 BE * 1251 - ANSI Cyrillic; Cyrillic (Windows) * 1252 - ANSI Latin 1; Western European (Windows) * 10007 - Cyrillic (Mac) * 12000 - UTF-32 LE * 12001 - UTF-32 BE * 20866 - Russian (KOI8-R); Cyrillic (KOI8-R) * 28591 - ISO 8859-1 Latin 1; Western European (ISO) * 28592 - ISO 8859-2 Central European; Central European (ISO) * 28595 - ISO 8859-5 Cyrillic * 65001 - UTF-8 .. warning:: При использовании не поддерживаемых :term:`кодировок<Кодировка>` будет использована кодировка UTF-8. :rtype: String .. attention:: * Для корректной работы метода требуется установленный :ref:`плагин Gs3-browser-cmd ` .. code-block:: delphi :caption: Пример использования str := LoadTextFromFile('D:\utf8file_in.txt', 65001); // Загружаем utf-8(unicode) файл и преобразуем в AnsiString ShowMessage(str); // Выводим Ansi строку в сообщение SaveTextToFile('D:\utf8file_out.txt', 1200, str, true); // Сохраняем строку в кодировке Utf-16(unicode) .. seealso:: * :pas:meth:`TbtkScriptSelectionObject.LoadFieldFromFile` * :pas:meth:`LoadFromFileToBlob` * :pas:meth:`LoadFromFile` .. pas:function:: LoadFromFileToBlob(FileName: String): Variant Метод загружает данные из файла в бинарный массив (blob). :param String FileName: Имя файла. :rtype: Variant .. code-block:: delphi :caption: Пример использования begin BlobOpen_testAPI.SetblobData(:id, :FileInBlob); end; blob := LoadFromFileToBlob('D:\1.mp3'); // загрузка из файла Selection.AddVar('FileInBlob',blob, ftOraBlob); SaveBlobtoFile('D:\2.mp3', GetVar('FileInBlob')); // сохрание в другой файл ExecSQL('SaveBlob'); // Сохрание на сервере .. note:: * Для загрузки файлов из файловой системы пользователя необходим установленный :ref:`плагин Gs3-browser-cmd `. Если плагин не установлен: - Если перед вызовом `LoadFromFileToBlob` вызывался `AskFileNameForOpen` или `AskFileNamesForOpen` и указано выбранное имя файла, то загружается ранее выбранный файл. - В иных случаях откроется диалоговое окно для выбора файла, а загрузка будет выполнена через UploadManager. .. seealso:: * :pas:meth:`LoadTextFromFile` * :pas:meth:`TbtkScriptSelectionObject.LoadFieldFromFile` * :pas:meth:`LoadFromFile` .. pas:method:: SaveToFile(FileName, FileText: String) Сохраняет текст *FileText* в файл *FileName*. Если имя файла пустое - вызывается диалоговое окно выбора файла. :param String FileName: Имя файла. :param String FileText: Сохраняемый текст. .. code-block:: delphi :caption: Пример использования [out svRes] begin :svRes := AC_Loader.GetAfterScript; end; v := ExecSqlEx('sAfter', 'svRes', [ftOraClob], ['']); SaveToFile('', v[0]); .. note:: * Ввиду технических ограничений, на текущий момент, открывается не системный диалог сохранения файла, а системный диалог выборка файла. Таким образом, если файл для сохранения отсутствует, его необходимо создать вручную заранее, либо в окне выбора файла. * Сохранение в файловой системе пользователя происходит только при наличии установленного :term:`плагина <Плагин>`. Если плагин отсутствует - произойдет сохранение файла через загрузчик бразуера. .. seealso:: * :pas:meth:`TbtkScriptSelectionObject.SaveFieldToFile` * :pas:meth:`SaveTextToFile` * :pas:meth:`SaveBlobToFile` .. pas:method:: SaveToFile() Экспортирует содержимое выборки в файл формата `.xls` во временную директорию .. code-block:: delphi :caption: Пример использования SaveToFile(); .. pas:function:: SaveBlobToFile(FileName: String; BlobData: Variant) Сохранение бинарных данных в файл. :param String FileName: Имя файла :param Variant BlobData: Бинарные данные. .. code-block:: delphi :caption: Пример использования begin BlobOpen_testAPI.SetblobData(:id, :FileInBlob); end; blob := LoadFromFileToBlob('D:\1.mp3'); // загрузка из файла Selection.AddVar('FileInBlob',blob, ftOraBlob); SaveBlobtoFile('D:\2.mp3', GetVar('FileInBlob')); // сохранение в другой файл ExecSQL('SaveBlob'); // Сохранение на сервере .. note:: * Сохранение в файловой системе пользователя происходит только при наличии установленного :term:`плагина <Плагин>`. Если плагин отсутствует - произойдет сохранение файла через загрузчик бразуера. .. seealso:: * :pas:meth:`TbtkScriptSelectionObject.SaveFieldToFile` * :pas:meth:`SaveTextToFile` * :pas:meth:`SaveToFile` .. pas:function:: SaveTextToFile(FileName: String; Encoding: Integer; TextData: String; Preamble: Boolean) Метод сохраняет символьные данные *TextData* в файле в заданной :term:`кодировке<Кодировка>` *Encoding*. Параметр *Preamble* применяется для кодировки **Unicode** и определяет задавать префикс с типом **Unicode** кодировки или нет. Большинство приложений (Блокнот, NotePad++ и др.) считывают префикс и отображают текст в нужной кодировке. Рекомендуется всегда задавать префикс, передавая в параметре **Preamble** значение **True**. :param String FileName: Имя файла. :param Integer Encoding: :term:`Кодировка` файла. Доступные значения: * 1200 - UTF-16 LE * 1201 - UTF-16 BE * 65000 - UTF-7 .. warning:: :term:`Кодировка` UTF-7 не поддерживается в :term:`AS`. При использовании данного значения будет использована кодировка UTF-8 * 65001 - UTF-8 :param String TextData: Массив символьных данных. :param Boolean Preamble: Флаг определяет задавать префикс или нет. .. code-block:: delphi :caption: Пример использования str := LoadTextFromFile('D:\utf8file_in.txt', 65001); // Загружаем utf-8 (unicode) файл и преобразуем в AnsiString ShowMessage(str); // Выводим Ansi строку в сообщение SaveTextToFile('D:\utf8file_out.txt', 1200, str, true); // Сохраняем строку в кодировке Utf-16(unicode) .. warning:: * **BOM** префикс добавляется всегда и аргумент *Preamble* не влияет на добавление .. note:: * Если в аргумент *Encoding* передано значение, отсутствующее в перечислении, будет использована кодировка UTF-8. * Сохранение в файловой системе пользователя происходит только при наличии установленного :term:`плагина <Плагин>`. Если плагин отсутствует - произойдет сохранение файла через загрузчик бразуера. .. seealso:: * :pas:meth:`TbtkScriptSelectionObject.SaveFieldToFile` * :pas:meth:`SaveToFile` * :pas:meth:`SaveBlobToFile`