Tcl - 文件 I/O

Tcl 通过内置命令 open、read、puts、gets 和 close 来支持文件处理。

文件代表字节序列,无论是文本文件还是二进制文件。

打开文件

Tcl 使用 open 命令在 Tcl 中打开文件。 打开文件的语法如下 −

open fileName accessMode

此处,filename 是字符串文字,您将使用它来命名文件,accessMode 可以具有以下值之一 −

序号 模式 & 描述
1

r

打开现有文本文件以进行读取,并且该文件必须存在。 这是未指定 accessMode 时使用的默认模式。

2

w

打开一个文本文件进行写入,如果不存在,则创建一个新文件,否则现有文件将被截断。

3

a

打开一个文本文件以追加模式写入,并且文件必须存在。 在这里,您的程序将开始在现有文件内容中附加内容。

4

r+

打开一个文本文件以进行读写。 文件必须已经存在。

5

w+

打开一个文本文件以进行读写。 如果文件存在,它首先将其截断为零长度,否则创建文件(如果不存在)。

6

a+

打开一个文本文件以进行读写。 如果文件不存在,它将创建该文件。 阅读会从头开始,但写作只能追加。

关闭文件

要关闭文件,请使用 close 命令。 close的语法如下 −

close fileName 

程序使用完该文件后,必须关闭该程序打开的任何文件。 在大多数情况下,文件不需要显式关闭; 当 File 对象自动终止时,它们也会自动关闭。

写入文件

Puts 命令用于写入打开的文件。

puts $filename "text to write"

下面显示了写入文件的简单示例。

#!/usr/bin/tclsh

set fp [open "input.txt" w+]
puts $fp "test"
close $fp

当上面的代码编译并执行时,它会在启动的目录(程序的工作目录)中创建一个新文件input.txt

读取文件

以下是从文件读取的简单命令 −

set file_data [read $fp]

完整的读写示例如下所示 −

#!/usr/bin/tclsh

set fp [open "input.txt" w+]
puts $fp "test"
close $fp
set fp [open "input.txt" r]
set file_data [read $fp]
puts $file_data
close $fp

当上面的代码被编译并执行时,它会读取上一节中创建的文件并产生以下结果 −

test

这是另一个逐行读取文件直到文件末尾的示例 −

#!/usr/bin/tclsh

set fp [open "input.txt" w+]
puts $fp "test\ntest"
close $fp
set fp [open "input.txt" r]

while { [gets $fp data] >= 0 } {
   puts $data
}
close $fp

当上面的代码被编译并执行时,它会读取上一节中创建的文件并产生以下结果 −

test
test