求助!刚用一次line input 就到EOF了,奇怪!

来源:百度知道 编辑:UC知道 时间:2024/06/27 04:32:39
我读的是一个挺大的test.log文件,用Ultraedit看的话,分了好多行,格式也挺好看懂的。

但是我用下面的语句去读,却发现只读了一次就到EOF跳出循环了,debug.print 了一下,发现变量里确实是整个文件的内容。

Open "D:\Project\test.txt" For Input As 1

Do Until EOF(1)

Line Input #1, one_line_in_file

Debug.Print one_line_in_file

Loop

Close 1

请教高手这是怎么回事?Line Input是怎么判断哪里是一行的末尾的?如果这个文件总共就一行的话,为什么Ultraedit可以显示为多行呢?在Unix下面用vi看这个文件,也是多行的。

恳请高手出手相助!谢谢!

可能你的文件里只有换行符而没有回车符,Linux/UNIX的文本格式是这样定义新行的,而Windows则以回车+换行定义新行。UltraEdit可以识别并显示Linux/UNIX文本格式,所以显示没有问题。

你犯了一个错误呵..

one_line_in_file

呵呵,就是文件中的一行
你使用
Line Input #1, one_line_in_file
也就是从文件中读取1行
每次的DO,都会继续读取下一行,又将下一行的内容,再次放到one_line_in_file变量中..造成,你读取完成后,内容只有一行呵..
而你使用Debug.Print 时,在DO循环中,将每一行都打印出来了..

如果你是想读取全部内容,可以使用如下办法,就是多一个变量:
dim all_line_in_file as string

Open "D:\Project\test.txt" For Input As 1
Do Until EOF(1)
Line Input #1, one_line_in_file
all_line_in_file =all_line_in_file & one_line_in_file & vbcrlf
Loop
Close 1

这样读取完成后all_line_in_file 里面放的就是全部的内容了..