QB编程的相关知识-文件系统

来自: 作者:

我们大家的电脑上99%的用的都是WIN的操作系统,所以我们首先来看看WINDOWS对本地硬盘上的文件管理。
WINDOWS的文件系统有两种格式1-FAT 2-NTFS ,对于一个学习编程的用户来说,操作文件在这2个系统上并没有什么很特别的地方,都可以用OPEN 。。。来打开一个文件,WINDOWS文件的最小单位是簇,一个簇包含多个扇区,也就是一个文件就算你只有1一个字节,他也要在你的硬盘上占用几K的空间,对于一个硬盘,他的最小单位是扇区,一个扇区的大小一般是512个字节,就算你只有一个字节的内容要写扇区,他也要占用512个字节。
在QBASIC中你在用OPEN语句打开文件往里面写东西的时候,到底是怎么写进去的呢,(操作系统完成写文件过程也一样)实际上QBASIC用了INT21中断中的文件服务功能,在操作系统接受写文件功能以后,就在FAT(文件分配表)中找这个文件所在的簇,找到以后就转换成绝对的扇区号,然后调用BIOS中的INT13中断(这个中断是专门用于磁盘服务的),BIOS会把中断请求翻译转换到相应IO比如1F0...1F7这样的端口,硬盘上也有BIOS芯片,它会根据这些数据转换成具体的内容,最后驱动磁头完成一次写操作,这个过程说起来很长,电脑实现起来是非常快的!
知道这个过程有什么好处呢,比如,现在的网吧很多都用还原精灵保护,按照上面的原理来分析,他可以从这样的环节来控制写硬盘,一替换INT21中断的文件 二替换INT13的写硬盘,三监视端口,最后就是对硬盘上BIOS的控制了,这个没有哪个有时间精力来做!通过分析还原精灵是替换了INT13中断(市场上的还原卡也类似),所以我们可以饶过它,直接用端口来写!

路径:
对于一个编程学习的网友来说,文件中比较重要的就是路径的概念了,WINDOWS以目录树的形式管理磁盘,这里的目录就是文件夹。他是一层一层的,构成一个树的形式。在一个盘符中最底层的目录为根目录,根目录下的目录都称为它的子目录,根目录用"\"表示,一个目录的上一层目录用".."表示。我们可以通过路径来查找某一个文件或目录,路径就如同地址一样,可以使用户方便、准确地进行查找。比如"C:\Windows\Command\deltree.exe"就是一个文件的路径。

相对路径与绝对路径:

如果从根目录开始定位一个文件,则其路径称为该文件的绝对路径,如上述的例子。
  如果我们使用计算机的话,一定使用磁盘或光盘之类的外部存储器,我们必然处于其中的某个位置,
比如C:\Dos,我们称之为当前目录,在某个盘中,我们只能也必然处于某一(不是二、三)个位置,所以,我们的某个盘的当前目录只有一个,但是我们可以改变当前目录。
  从当前目录算起来定位一个文件,所经过的路径称相对路径。比如,..\ABC\Readme.txt,其中,
..\ABC\ 就称为当前目录为 C:\Dos 时文件Readme.txt所在的相对路径,同样,Tools\Hdcopy.exe 也是相对路径表示方法,只是Tools是当前目录 C:\Dos 下的子目录。这里的..表示上级目录。
  在同一个目录下,不允许存在相同名称的文件或目录
电脑中的数据主要都是以文件形式存储的,文件是相关数据的集合,若干数据聚集在一起组成一个文件。每个文件都有文件名,文件名由主文件名和后缀名两部分组成,中间有小圆点隔开。DOS6.22及其以前版本最多仅支持8个字符的主文件名和3个字符的后缀名,而从Windows 95的DOS7.0开始就可支持128个字符的主文件名和后缀名。字母、汉字、数字和一些特殊符号如"!、@、#"都可以作为文件名,但不能有"/、\、|、:、?"等符号。
由于QB是DOS时代的产物,所以不支持长文件名,在QBASIC中 打开一个文件,文件名不能大于8+3个字符,如果要用长文件名,也不市没有办法的,对于一个编程的人来说,不要轻易的说这个那个语言有局限,做不到,而是要说我一定能做到,事实上也能做到,语言本身不提供长文件名,可以查阅相关的资料,然后自己写来个调用语句,详细的使用方法请在DOSQB网站看我写的原程序.
用QB可以打开硬盘上所有格式的文件(不含NT系统)也就是你可以对一个电脑里的硬盘上任何的文件进行操作,如果你改写了WINDOWS关键的文件,例如在WIN98中你 用
OPEN "C:\WINDOWS\WIN.COM" FOR BINARY AS #1
FOR I=1 TO LOF(1)
PUT 1,I,0
NEXT
END
系统就无法正常启动运行了,所以学习好文件的使用是非常非常的重要,希望大家重视,而且这个也不复杂,很容易就能学明白!
在QB中,操作文件是及其方便的 ,比C语言要方便很多
有关文件语句的操作请大家多加练习!