You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移动.love文件后Love2D项目Lua无法读取文件的解决咨询

Love2D打包.love后io.open失效的解决方案

问题原因

当运行打包好的.love文件时,系统的当前工作目录(CWD)并非.love包内部的文件结构,而是启动.love文件时所在的系统文件夹。io.open是系统级文件操作,会基于这个系统当前目录查找文件,而非从.love包的根目录开始,所以你写的utils/parameters.json路径会指向系统当前目录下的utils文件夹,自然找不到包内的文件。

而在原项目文件夹运行时,系统当前工作目录正好是项目根目录,因此io.open能正常找到文件。

正确解决方案:使用love.filesystem模块

Love2D专门提供love.filesystem模块处理包内文件资源,它会自动从.love包的根目录(与main.lua同层级的位置)解析路径,不受系统当前工作目录影响。

修改JSONHandler.lua的代码

将原io.open的代码替换为love.filesystem的API,示例如下:

原错误代码片段:

local file = io.open(self.filename, "r")
local content = file:read("a")

替换为简洁的直接读取方式:

local content, err_msg = love.filesystem.read(self.filename)
if not content then
    error("读取parameters.json失败: " .. err_msg)
end

若需要逐行读取等复杂操作,可使用文件对象方式:

local file, err_msg = love.filesystem.newFile(self.filename, "r")
if not file then
    error("打开parameters.json失败: " .. err_msg)
end

local content = file:read("a")
file:close() -- 操作完成后关闭文件

你的Handler.filename = "utils/parameters.json"路径无需修改,因为love.filesystem会从包的根目录开始查找,与项目结构完全匹配。

特殊情况:需要修改并保存parameters.json

如果parameters.json是需用户修改、程序写入的配置文件,不能放在.love包内(.love是只读压缩包),需将文件复制到Love2D的保存目录后再读写:

Handler = {
    -- 包内的原始配置文件路径
    default_filename = "utils/parameters.json",
    -- 保存目录的配置文件路径
    save_filename = love.filesystem.getSaveDirectory() .. "/parameters.json",
    params = {},
    ...
}

function Handler:init()
    local o = {}
    setmetatable(o, self)
    self.__index = self

    -- 检查保存目录是否有配置文件,无则从包内复制
    if not love.filesystem.getInfo(self.save_filename) then
        local default_content = love.filesystem.read(self.default_filename)
        love.filesystem.write(self.save_filename, default_content)
    end

    -- 读取保存目录的配置文件
    local content, err_msg = love.filesystem.read(self.save_filename)
    if not content then
        error("读取配置文件失败: " .. err_msg)
    end
    -- 后续解析content的逻辑不变
    ...
end

love.filesystem.getSaveDirectory()会返回Love2D为游戏分配的专属可读写保存路径,不同系统路径不同,但均保证可正常读写。

内容的提问来源于stack exchange,提问作者Capnsockless

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:08:28