FileReadLine

读取文件指定行的文本并保存到变量.

FileReadLine, OutputVar, Filename, LineNum

参数

OutputVar

用来存储获取的文本的输出变量的名称.

Filename

要访问的文件名, 如果未指定绝对路径, 则假定在 %A_WorkingDir% 中. 支持 Windows 和 Unix 格式; 即文件的行结束符可以是回车和换行符(`r`n) 或只是换行符(`n).

LineNum

要读取的行号(首行为 1, 第二行为 2, 依此类推). 可以为表达式.

如果指定的行号大于文件的行数, 则 ErrorLevel 被设置为 1 且 OutputVar 不会发生变化. 当指定的行号为文件的最后一行且此行为空, 同时不是以 新行/CRLF 结束时, 也会发生这种情况.

错误处理

[v1.1.04+]: 此命令失败时会抛出异常. 想了解更多信息, 请参阅运行时错误.

成功时 ErrorLevel 被置为 0. 否则它被设置为 1 且 OutputVar 的原始内容不会发生变化.

A_LastError 被设置为操作系统 GetLastError() 函数返回的结果.

备注

强烈建议仅对于小文件或只需要单行文本的情况时使用此命令. 要扫描并处理大量的文本行(一行接一行), 请使用文件读取循环来获取最好的性能. 要读取整个文件到变量中, 请使用 FileRead.

虽然一行中任何前导和尾随的空格和 tab 都会被写入 OutputVar, 但是行末的换行符(`n) 则不会. 当 AutoTrim 设置打开(默认的) 时, 任何变量都可以通过赋值给自己来移除变量两端的空格和 tab. 例如: MyLine = %MyLine%.

最大可以读取包含 65,534 字符的长行. 如果行的长度超过这个极限, 则此命令无法读取剩余的字符(此时应使用 FileRead文件读取循环代替).

FileOpen() / File.ReadLine(), FileRead, FileAppend, 文件读取循环, IniRead

示例

逐行读取一个文本文件. 注意, 使用文件读取循环可以达到同样的效果(但性能更好).

Loop
{
    FileReadLine, line, C:\My Documents\ContactList.txt, %A_Index%
    if ErrorLevel
        break
    MsgBox, 4, , Line #%A_Index% is "%line%".  Continue?
    IfMsgBox, No
        return
}
MsgBox, The end of the file has been reached or there was a problem.
return