在tcl中读写

时间:2012-07-29 19:24:16

标签: multithreading file file-io tcl

TCL 中同时写作时是否有任何阅读方法?
我尝试使用w + 所以并且它不起作用。

set f0 [open out11.tr w+]  

所以我想阅读同时写完的每一行

2 个答案:

答案 0 :(得分:1)

虽然w+模式可以工作,但是当你打开它时它会截断文件(因为它是w模式的修改,它执行相同的操作)。如果您不想擦除现有数据,请改用r+(在这种情况下,文件必须首先存在)。

当你想要创建文件时,如果它不存在,能够通过同一个通道读取和写入,并且不想在打开时截断它,你必须使用 other < / em>模式描述符的形式(从POSIX描述符派生,如果你对助记符感兴趣):

set f0 [open out11.tr {RDWR CREAT}]

w+RDWR CREAT TRUNCr+为普通RDWR。)

答案 1 :(得分:1)

以下示例使用w +打开文件(表示读/写,但如果文件已存在则截断内容)。然后它写入每一行,然后回读,写入,然后回读,......

set lines {
    {Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi}
    {accumsan est ut ante ornare et porta sem iaculis. Fusce a dolor}
    {magna, eget viverra quam. In sem justo, hendrerit a porttitor sit}
    {amet, scelerisque eu turpis. Nulla arcu arcu, condimentum vel}
    {fermentum sit amet, vulputate et sapien. Aenean convallis, purus vel}
    {molestie vehicula, diam eros adipiscing nibh, in dapibus nisi orci}
    {ut nisl. Ut fermentum felis a lectus lacinia dapibus. Nunc cursus}
    {nunc vitae massa fermentum imperdiet. In eu lectus quis arcu}
    {convallis imperdiet in quis tortor.}
}

set f [open out.txt w+]
set lastRead 0
foreach line $lines {
    # Write to the file
    puts $f $line

    # Read it back and display to stdout
    seek $f $lastRead
    gets $f line2
    set lastRead [tell $f]
}
close $f