alfacentavra
alfacentavra личный блог
24 апреля 2024, 11:44

Qlua: статус файла.

Иногда бывает необходимо учесть в программе, что файл с которым собираетесь работать отсутствует, занят другой программой или пуст.

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

Qlua: статус файла.

Проверить занят ли файл, а также проверить что он не пустой можно следующей функцией:
Qlua: статус файла.

Все данные с файла C:\files\test.csv сохраняются в массив string_file, который будет глобальным и его можно использовать далее в main, например.

Основная часть программы:
Qlua: статус файла.


Если файл C:\files\test.csv существует, то скрипт выведет размер файла.
Если открыт (например в excel), то укажет, что файл занят.
Если будет пустым, то получим соответствующий статус.

Скрипт: github.com/morefinances/qlua/blob/main/status_file.lua
23 Комментария
  • DrManhattan
    24 апреля 2024, 11:47
    что-то какие кракозябры в коде на гите.
    Что за древние кодировки?
  • Олег Леликов
    25 апреля 2024, 14:11
    alfacentavra, здравствуйте. Огромное спасибо. Есть несколько вопросов.
    В первой функции запрос типа файла, это его содержимого или просто его названия?
    И в первой и во второй функции происходит вызов самой себя? Не произойдёт ли зацикливание файла?
    Не достаточно ли будет после открытия файла провести проверку #fale, чтобы определить его размер?
    Если во второй функции открываем методом «а+» не произойдёт ли стирание содержимого файла?
  • Олег
    25 апреля 2024, 16:17
    Спасибо. Да, по «а+» — дополнение, по «w» — стирание и новая запись.
    В первом вопросе я имел ввиду необходимость данного условия: if type(file) == «string» then
  • Cubigator
    25 апреля 2024, 18:23
    -------------------------------------------------------------------------------
    ------------------------проверка существования файла-----------------------
    -------------------------------------------------------------------------------
    function file_exists(name)
       local f = io.open(name, «r»)
       return f ~= nil and io.close(f)
    end

    короче Склифософский©

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн