位置:首頁 > 腳本語言 > Tcl教學 > TCL文件I/O

TCL文件I/O

TCL支持文件處理使用內置命令,如:open, read, puts, gets 和 close.

一個文件代表了一個字節序列,不要緊,如果它是一個文本文件或二進製文件。

打開文件

TCL使用open命令在Tcl中打開文件。打開文件的語法如下。

open fileName accessMode

在這裡,文件名是字符串文字,用它來命名文件名,accessMode可以是以下值之一:

模式 描述
r 打開一個現有的文本文件讀取並且文件必須存在。這是冇有指定accessMode時使用的默認模式。
w 打開用於寫入的文本文件中、,如果它不存在,則一個新文件創建,其他現有的文件將被截斷。
a 打開寫在追加模式,文件必須存在一個文本文件。在這裡,程序將開始追加到現有的文件內容的內容。
r+ 打開用於讀取和寫入兩種的文本文件。文件必須已經存在。
w+ 打開用於讀取和寫入兩種的文本文件。如果它存在首先截斷文件為零長度,否則創建該文件,如果它不存在。
a+ 打開用於讀取和寫入兩種的文本文件。它,如果它不存在,創建該文件。讀數將從頭開始,但寫隻能追加。

關閉文件

要關閉一個文件,請使用close命令。close 的語法如下。

close fileName 

當程序完成使用該文件已被打開的一個程序中的任何文件都必須關閉。在大多數情況下,文件不需要被明確地關閉;它們會自動關閉,當文件對象會自動終止。

寫入文件

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