io.open()

类型 函数
io.*
返回值 对象
修订版 版本 2024.3703
关键词 io、open、file
另请参阅 io.close()
io.read()

概述

此函数以字符串(默认)或二进制模式打开文件,以便进行读取或写入。它返回一个新的文件句柄或(如果发生错误)nil 加一条错误消息。此函数还可用于创建新文件。

语法

io.open( file [, mode] )
file (必需)

对象。要打开的文件。你必须使用 system.pathForFile() 来创建文件名和路径到 system.ResourceDirectorysystem.DocumentsDirectorysystem.ApplicationSupportDirectorysystem.TemporaryDirectorysystem.CachesDirectory常量

mode (可选)

字符串。确定用于在哪个文件模式中打开文件。模式字符串可以是以下任何一个

  • "r" — 阅读模式(默认);文件指针置于文件的开始处。

  • "w" — 只写模式;如果文件存在,则覆盖该文件。如果文件不存在,则创建一个新文件来写入。

  • "a" — 追加模式(只写);如果文件存在,文件指针将位于文件的结尾处(文件处于追加模式)。如果文件不存在,则创建一个新文件来写入。

  • "r+" — 更新模式(读/写);所有先前数据都将被保留。文件指针将位于文件开头。如果文件存在,只有当你明确写入时才会覆盖该文件。

  • "w+" — 更新模式(读/写);所有先前数据都将被删除。如果文件存在,则覆盖该文件。如果文件不存在,则创建一个新文件来进行读写。

  • "a+" — 追加更新模式(读/写);先前数据将被保留,且仅允许在文件尾部进行写入。如果文件存在,文件指针将位于文件的结尾处(文件以追加模式打开)。如果文件不存在,则创建一个新文件来进行读写。

模式字符串还可以在末尾加一个 'b',这在某些系统中需要,以便以二进制模式打开文件。此字符串完全是标准 C 函数 fopen 中使用的那样。

问题

出于安全原因,您不允许在 system.ResourceDirectory (存储应用程序的目录;您的项目目录;main.lua 所在的位置)中写入文件。在 system.pathForFile() 函数中打开文件进行写入时,您必须指定 system.DocumentsDirectorysystem.TemporaryDirectorysystem.CachesDirectory 参数。

示例

-- Path for the file to read
local path = system.pathForFile( "myfile.txt", system.DocumentsDirectory )

-- Open the file handle
local file, errorString = io.open( path, "r" )

if not file then
    -- Error occurred; output the cause
    print( "File error: " .. errorString )
else
    -- Output lines
    for line in file:lines() do
        print( line )
    end
    -- Close the file handle
    io.close( file )
end

file = nil