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