类型 函数 库 io.* 返回值 对象 修订版 版本 2024.3703 关键词 io、open、file 另请参阅 io.close() io.read()
此函数以字符串(默认)或二进制模式打开文件,以便进行读取或写入。它返回一个新的文件句柄或(如果发生错误)nil
加一条错误消息。此函数还可用于创建新文件。
io.open( file [, mode] )
对象。要打开的文件。你必须使用 system.pathForFile() 来创建文件名和路径到 system.ResourceDirectory
、system.DocumentsDirectory
、system.ApplicationSupportDirectory
、system.TemporaryDirectory
或 system.CachesDirectory
常量。
字符串。确定用于在哪个文件模式中打开文件。模式字符串可以是以下任何一个
"r"
— 阅读模式(默认);文件指针置于文件的开始处。
"w"
— 只写模式;如果文件存在,则覆盖该文件。如果文件不存在,则创建一个新文件来写入。
"a"
— 追加模式(只写);如果文件存在,文件指针将位于文件的结尾处(文件处于追加模式)。如果文件不存在,则创建一个新文件来写入。
"r+"
— 更新模式(读/写);所有先前数据都将被保留。文件指针将位于文件开头。如果文件存在,只有当你明确写入时才会覆盖该文件。
"w+"
— 更新模式(读/写);所有先前数据都将被删除。如果文件存在,则覆盖该文件。如果文件不存在,则创建一个新文件来进行读写。
"a+"
— 追加更新模式(读/写);先前数据将被保留,且仅允许在文件尾部进行写入。如果文件存在,文件指针将位于文件的结尾处(文件以追加模式打开)。如果文件不存在,则创建一个新文件来进行读写。
模式字符串还可以在末尾加一个 'b'
,这在某些系统中需要,以便以二进制模式打开文件。此字符串完全是标准 C 函数 fopen 中使用的那样。
出于安全原因,您不允许在 system.ResourceDirectory
(存储应用程序的目录;您的项目目录;main.lua
所在的位置)中写入文件。在 system.pathForFile() 函数中打开文件进行写入时,您必须指定 system.DocumentsDirectory
、system.TemporaryDirectory
或 system.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