Помощь - Поиск - Пользователи - Календарь
Полная версия: Можно ли получить параметр размера файла? (lua)
UoKit.com Форумы > Кликер > UO Pilot
фонарик
Подскажите, пожалуйста, кто знает, как узнать размер файла? Всю справку перерыл, не нашел read.gif
cirus
Узнать размер файла
Код
--lua
local ffi = require("ffi")
local GENERIC_READ = 0x80000000
local OPEN_EXISTING = 3
local INVALID_HANDLE_VALUE = -1
ffi.cdef[[ unsigned long GetFileSize(int  hFile, unsigned long* lpFileSizeHigh);
           int CreateFileA(const char* lpFileName, unsigned long dwDesiredAccess, unsigned long dwShareMode, int lpSecurityAttributes,
           unsigned long dwCreationDisposition, unsigned long dwFlagsAndAttributes, int hTemplateFile);
           bool CloseHandle(int hObject);
]]

function get_file_size(file_name)
    local hFile = ffi.C.CreateFileA(file_name, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0)
    if hFile == INVALID_HANDLE_VALUE then
        log('Файл не открылся')
        return nil
    end
    local size_file = ffi.C.GetFileSize(hFile, nil)
    ffi.C.CloseHandle(hFile)
    return size_file
end

local result = get_file_size([[C:\Windows\notepad.exe]])   -- размер файла
log (result)
sutra
cirus дал очень хороший пример. Сам сейчас использую только низкий уровень по функциям работы с файлами. Но до недавнего времени использовал вот такой способ.
--lua
local arr,count=dir([[C:\Windows]],"notepad.exe","norecursion")
log(arr[1][5])

5-й элемент содержит размер файла. Подробнее по команде dir смотрите справку.
фонарик
Ребята, спасибо вам огромное. Буду пробовать оба примера для своей задачи. У меня огромный текстовый список файлов, нужно сверить данные размера из списка с текущим положением дел smile.gif И обновить их в списке если они неверные.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.