-- 保存已经生成过的文件, -- 如果当前要生成的文件在列表里面已经存在了, -- 则表示文件重名 g_files = {}; -- 生成一个文件 function linkFile(sourceFile , targetPath, targetFile , versionInfo) print("linkFile" , sourceFile); local pathName , baseName , ext = string.splitFilename(sourceFile); if isIgnoreFile(pathName , baseName , ext) then return; end --print("链接文件" .. sourceFile) local fileInfo = g_files[baseName]; if fileInfo then error("文件重名:[" .. sourceFile .. "] 与 [" .. fileInfo.origin .. "]"); end fileInfo = xml.new("file"); versionInfo.files[baseName] = fileInfo; -- 保存全局文件列表 g_files[baseName] = fileInfo; local cacheFile = compileFile(sourceFile, targetPath); fileInfo.origin = cacheFile.origin; fileInfo.name = cacheFile.name; fileInfo.md5 = cacheFile.md5; fileInfo.size = cacheFile.compileSize; fileInfo.preload = false -- 是否新手期文件 if not hasCmdArg("-onlyServer") then -- 保存加密文件到客户端 local assetFileName = targetPath .. "/assets/" .. fileInfo.md5 local targetClientFile = io.open(assetFileName, "wb"); targetClientFile:write(loadFile(cacheFile.encryptFile)); targetClientFile:close(); end -- 保存加密并压缩后的文件到服务端 fileInfo.offset = targetFile:seek(); local compressedData = loadFile(cacheFile.compressedFile); targetFile:write(compressedData); fileInfo.compressedSize = string.len(compressedData) end