Ruby I/O 存在问题
Ruby I/O Existence Issues
我对 Ruby 代码有相当多的了解,但我当前的项目确实存在问题。我使用 Gosu 制作 2D 游戏(一旦我弄清楚如何制作简单的 3D 游戏),所以我需要一个解决方案。
这就是我的问题所在,为什么 Ruby 在查看设置文件是否存在时总是给我一个错误?我一直试图让它与不存在的文件一起工作,这一直给我错误,“'initialize': 没有这样的文件或目录@ rb_sysopen - ./settings.set (Errno ::ENOENT)" 这几天一直困扰着我。当我创建文件时,该文件没有给出任何问题并且实际上按预期工作,但我希望它位于如果文件从某人的计算机上删除的地方,它会重建文件并使用默认值创建一个新文件。
这是它不断崩溃的区域:
settings = []
settings_file_existance = File.file?("settings.set")
if settings_file_existance == true
File.open("settings.set").readlines.each do |line|
settings.push line
end
else
settings_file = File.open("settings.set")
settings_file.write "800"
settings_file.write "\n"
settings_file.write "600"
settings_file.close
end
我曾尝试在此站点以及许多其他站点上寻找修复程序,但到目前为止还没有人能够提供帮助。
你可以试试这个:
settings = []
if File.file?("settings.set")
settings = File.read("settings.set").split("\n")
else
File.open("settings.set", "w") do |file|
file.write "800\n600"
end
end
作为旁注,考虑到只有在 settings.set 文件退出时,上面的代码才会设置 settings
,否则它将保留在一个空数组中(即 []
)。
如果您希望避免这种情况,只需使用默认值定义设置,例如:
settings = [800, 600]
现在如果 settings.set 文件不存在,那么 settings
将是 [800, 600]
,否则它将被值覆盖来自 settings.set.
为了避免写入800
和600
两次,您可以使用settings
变量来获取要写入新文件的值,例如:
file.write(settings.join("\n"))
将它们放在一起,您的代码将如下所示:
settings = [800, 600]
if File.file?("settings.set")
settings = File.read("settings.set").split("\n")
else
File.open("settings.set", "w") do |file|
file.write(settings.join("\n"))
end
end
我对 Ruby 代码有相当多的了解,但我当前的项目确实存在问题。我使用 Gosu 制作 2D 游戏(一旦我弄清楚如何制作简单的 3D 游戏),所以我需要一个解决方案。
这就是我的问题所在,为什么 Ruby 在查看设置文件是否存在时总是给我一个错误?我一直试图让它与不存在的文件一起工作,这一直给我错误,“'initialize': 没有这样的文件或目录@ rb_sysopen - ./settings.set (Errno ::ENOENT)" 这几天一直困扰着我。当我创建文件时,该文件没有给出任何问题并且实际上按预期工作,但我希望它位于如果文件从某人的计算机上删除的地方,它会重建文件并使用默认值创建一个新文件。
这是它不断崩溃的区域:
settings = []
settings_file_existance = File.file?("settings.set")
if settings_file_existance == true
File.open("settings.set").readlines.each do |line|
settings.push line
end
else
settings_file = File.open("settings.set")
settings_file.write "800"
settings_file.write "\n"
settings_file.write "600"
settings_file.close
end
我曾尝试在此站点以及许多其他站点上寻找修复程序,但到目前为止还没有人能够提供帮助。
你可以试试这个:
settings = []
if File.file?("settings.set")
settings = File.read("settings.set").split("\n")
else
File.open("settings.set", "w") do |file|
file.write "800\n600"
end
end
作为旁注,考虑到只有在 settings.set 文件退出时,上面的代码才会设置 settings
,否则它将保留在一个空数组中(即 []
)。
如果您希望避免这种情况,只需使用默认值定义设置,例如:
settings = [800, 600]
现在如果 settings.set 文件不存在,那么 settings
将是 [800, 600]
,否则它将被值覆盖来自 settings.set.
为了避免写入800
和600
两次,您可以使用settings
变量来获取要写入新文件的值,例如:
file.write(settings.join("\n"))
将它们放在一起,您的代码将如下所示:
settings = [800, 600]
if File.file?("settings.set")
settings = File.read("settings.set").split("\n")
else
File.open("settings.set", "w") do |file|
file.write(settings.join("\n"))
end
end