主题:文件语句的用法与实际应用讲解
qb45
[专家分:2880] 发布于 2005-07-31 11:52:00
文件语句使用讲座
在qb中学习完基本的语句后,最最值得大家认真学习的内容就是有关文件的部分了,
QB的文件操作在所有编程语言中是最方便、最简单、最强大的,而且和底成DOS中断很配合,学了以后在vb中也可以使用!
我看到初学者有个误区,以为文件操作最难,实际上,这个放在最后一章,并不是最难,在我看来所有的都一样难,也都一样简单,最难的是书上没有讲的,可能写教材的人也不知道如何用(这个应该不可能),这个才难!
相关知识(充实中....)
文件的扩展名对与qb来说无所谓,都可以用open语句打开
一、体验建立一个文件
初步练习生成一个文件
OPEN "TEMP.TXT" FOR OUTPUT AS #1 '打开,建立一个名字为temp.txt的文件,文件号为1
PRINT #1,"这是一个测试文件" '往1号文件里写
CLOSE #1 '关闭1号文件(只有关闭以后,内容才真正的写进去)
你可以在WIN下用记事本打开TEMP.TXT 这个文件,就会看到你刚刚输入的数!
如果你不会用记事本,就请用下面的代码
OPEN "TEMP.TXT" FOR OUTPUT AS #1
PRINT #1,"这是一个测试文件"
CLOSE #1
SHELL "NOTEPAD temp.TXT" '调用记事本
这时就能看到你生成的文件了!
SHELL 可以调用外部的命令、程序 。 这个NOTEPAD实际上就是WINDOWS的记事本程序
回复列表 (共3个回复)
沙发
qb45 [专家分:2880] 发布于 2005-07-31 11:16:00
二、有关文件语句的用法
OPEN 语句 的用法
格式:OPEN <文件名> FOR <读写方式> AS#<文件号>
<文件号>:
即文件缓冲区号,每一个文件都要指定一个不同的文件号(1~225) 说明:
<文件名>:
文件名不能大于8个,扩展名不能大于3个,不能包含非法字符(请看相关书疾)
<读写方式>:
<读写方式>:
随机方式很少用,不介绍
以OUTPUT方式打开文件,建立新文件,将删除已存在的文件。
以INPUT方式打开已存在的文件,读数据,从文件读入;
以APPEND方式打开文件,可在文件后面添加内容,不影响以前的东西
以BINARY方式打开文件,可在文件的任意位置读写
(2)CLOSE语句
关闭已用的文件
CLOSE [#<文件号1>][,#<文件号2>]……
关闭由文件号指定的文件缓冲区,将内容存盘,如不指定文件号,则关闭所有已打开的文件;
(3)、GET#语句(2进制方式用)
格式:GET #<文件号> [,<地址>][,<记录变量>]
功能: 用于从文件中读一个指定地址的记录,赋给一个记录变量。
(4)、PUT#语句 (2进制方式用)
格式:PUT #<文件号> [,<地址>][,<记录变量>]
功能: 将一个记录变量的内容写到指定地址的记录中去
(5)SEEK语句 (2进制方式用)
格式:SEEK#<文件号>,<字节位置>
把指针移动指定地方
(6)LOF语句
格式:LOF<文件号>
获得文件的大小!
(7)EOF语句
格式:EOF<文件号>
判断文件是否到最后!
(8)函数
FREEFILE返回一个空文件号
这个文件号不如就说成是文件句柄还容易理解一些,在win下很多很多东西都有一个句柄,这样说更容易接轨!
板凳
qb45 [专家分:2880] 发布于 2005-07-31 11:28:00
三、 用例子来学习这些语句
LOF语句的例子
open "qb.exe" for binary as #1
print "文件的大小是 " ,lof(1)
EOF get 语句的例子
open "qb.exe" for binary as #1
print "文件的大小是 " ,lof(1)
do
i=i+1 '文件的地址指针
get,i,a '在地址i处读一个数给a
if eof(1) then exit do '当文件读完就退出
loop
有时候要简单的判断文件是否存在,可以用LOF,如果lof返回的是0,文件可以当不存在
当文件的指针到结尾的时候EOF返回是-1,在qb中-1的逻辑判断是真,如果没有到结尾,EOF返回是0,所以if eof(1) then exit do 就能判断文件是否读完,如果读完就可以结束循环!
3 楼
qb45 [专家分:2880] 发布于 2005-07-31 11:45:00
四、实际运用
一、读一个文本文件,并显示
INPUT FILE$ '输入一个文件名
OPEN FILE$ FOR INPUT AS #1
do
i=i+1
LINE input #1, look$ '读一个行文字
print look$ '显示文字
if (i mod 22)=0 then a$=input$(1) '等待,按任一键继续
loop until EOF(1)
二 写个文件粉碎机
文件粉碎机介绍:当你删除一个文件以后,实际上并没有真正的删除,即使你清空了回收站也一样,有的网友恶作剧的写一个删除文件、FORMAT C或者是格式化别的什么盘的程序、批处理,同样不会达到他的目的,随便找个文件恢复软件就能把删除的数据找回来!
只有写个文件粉碎机才能达到真正的目的!
如果你先把要这个文件里的内容改变成垃圾,然后在删除,那么即使这个文件被恢复,由于内容被破坏,这个文件也就成垃圾了,而且写这个程序很那么的简单。
我们以qb.exe为例子,请大家先把qb.exe做备分!
cls
file$="qb.exe"
open file$ for binary as #1
print "文件名是 - > ",file$
print "文件的大小是 - > " ,lof(1)
locate 5,10:print "正在删除中 -> "
w%=0
do
i=i+1
locate 5,27:print i
put #1,,w% '往1号文件里写入变量w,w 的直是0,所以写入的是全0
loop until eof(1)
print "ok , 已经全部清除"
当然你觉得一遍不够的话反复多弄几次,不过w的数值每次都变化一下最好!
如果你把file$="qb.exe"改成win系统中的重要文件,那么系统就无法启动了!
当然,我上面的程序是不具备实际应用的,这里只是给大家讲个原理,如果要做实用价值的,要有遍历整个目录能力,而且,两个字节的读写方式会使粉碎整个磁盘的速度极其低下!要解决这些问题也很简单,随着大家编程能力的提高就慢慢会明白了!
我来回复