回 帖 发 新 帖 刷新版面

主题:关于Dir函数的疑问

请问各位高手,Dir()函数有时会返回"."或"..",这各代表什么意思啊?这个函数不是返回一个 String,用以表示一个文件名、目录名、文件夹名称或空字符串吗?怎么会有这两项返回值?

回复列表 (共8个回复)

沙发

"."  代表当前目录
".." 代表上一级目录

板凳

根据1楼的回答,我做了个实验,在我的电脑上运行:
Dim FileName As String
FileName = Dir("F:\", 31)
While FileName <> ""
    Print FileName
    FileName = Dir
    DoEvents
Wend
输出下列结果:
..
System Volume Information
Recycled
网络操作系统实验
SQL data
VB
CCNA
电脑知识
SQL Server
论文
VC++
汇编语言
JAVA


为什么第一项输出是"..",这怎么解释,难道说这是表示F:盘的上级目录吗?(搜索C、D、E盘却没有输出"..")

3 楼

FileName = Dir("F:\", 31)中的21是啥东东?以后最好用vb开头的参数名啦.如vbDirectory等.谁记得21是啥东东?或是啥东东的组合?

4 楼

vbDirectory or vbHidden or vbNormal or vbReadOnly or vbSystem or vbVolume '31
vbDirectory or vbSystem or vbNormal '21

vbfileattribute

5 楼

31=0+1+2+4+8+16
各值的意义如下,这里用31只是为了节省代码!
vbNormal 0 (缺省) 指定没有属性的文件。 
vbReadOnly 1 指定无属性的只读文件 
vbHidden 2 指定无属性的隐藏文件 
VbSystem 4 指定无属性的系统文件 
vbVolume 8 指定卷标文件;如果指定了其它属性,则忽略vbVolume 
vbDirectory 16 指定无属性文件及其路径和文件夹。 

6 楼

没人能回答我的问题吗?
Dir函数有时返回"."和".."是表示什么意思啊?

7 楼

这个问题并不难。你先去看看DOS,就明白了。

8 楼

以FAT分区格式来说“。”和“。。”在目录区里是实际有目录项的,也就是说它并非只是作为一个命令的逻辑上的参数跟在后面。“。”的簇指针指向当前目录区首簇,“。。”则指向上级目录区首簇。这样通过CD。。回到上级目录的方式就与“CD 目录名” 这种命令格式统一了起来。我想之所以这样实现,可能与内存空间还是比磁盘空间显的宝贵的原因吧?因为CD命令不必依靠在内存中维持一个目录的指针链,来返回上一级目录,因为每个目录区都在磁盘上有“。。”目录项,它们都记录着上级目录区的首簇。

我来回复

您尚未登录,请登录后再回复。点此登录或注册