精华内容
下载资源
问答
  • vb目录文件操作的三种方法

    千次阅读 2008-01-12 20:38:00
    下面我们就和大家一起学习一下vb中可以应用的三种方法:1、使用现成的控件2、使用visualbasic提供的方法3、使用windows提供的应用程序编程接口(api)。下面我们具体看看这些方法。 第一部分 

            对于程序,无论大到一个操作系统,小到一个单一功能的应用软件来说,很多时候,我们都要将一些数据记录和存储到磁盘中.可见,对目录和文件的操作是多么的重要.下面我们就和大家一起学习一下vb中可以应用的三种方法:1、使用现成的控件2、使用visualbasic中提供的方法3、使用windows提供的应用程序编程接口(api)。下面我们具体看看这些方法。
                第一部分   目录操作
                一、使用现成控件
                (一) 察看和显示目录下的文件和文件夹
                对于这个实现,其实很简单。首先想到的就是vb中给我们提供的现成的控件。主要有这么两类:一类是驱动器列表框(DriveListBox)、目录列表框(DirListBox)和文件列表框(FileListBox)三个控件组合而成的自定义对话框;另一类是windows提供的标准对话框。
                他们在工具箱中的位置和图标如下所示:
                   
                1、驱动器列表框是一个下拉式的列表框,他和一般下拉式的列表框的不同仅在于功能上的不同,它提供了一个驱动器的列表。当单击右边的箭头时,则弹出计算机中的所有驱动器的下拉列表。默认状态下,在驱动器列表中显示的是当前驱动器,我们可以输入或从下拉列表中选择有效的驱动器标示符.
                 
            下面是它的主要属性,事件和方法.
                  属性Drive本属性用于返回或设置运行时选择的驱动器.默认值为当前驱动器 , 改变Drive属性会触发Change事件.  
                  示例:  Drive1.Drive = “c:/”  
                  设置C盘为当前驱动器.
                  事件Change当选择一个新驱动器或通过代码改变了Drive属性时触发该事件                  

                下面是示例代码:

    Private Sub Drive1_Change()
                         Dir1.Path 
    = Drive1.Drive  
                 ‘当选择一个新驱动器时,将驱动器列表中选中的当前驱动器,赋给目录列表的路径.
     
    End Sub

            2、目录列表框
               目录列表框用于显示当前驱动器的目录结构,目录列表框从最高层目录开始,显示当前驱动器的目录结构,并按层次关系缩进跟目录下的所有子目录。下面是它的主要属性,方法和事件:
                 属性Path本属性用于返回或设置运行时选择的路径,默认路径为当前路径.改变Dri属性会触发Change事件. 
                      示例:  Dri1.Path = Drive1.Drive  
                 设置在驱动器列表框中选中的驱动器盘符为目录列表的当前路径.
                 ListIndex本属性用来返回或设置控件中当前被选择的项目索引号.目录列表框中的每一个目录都可以通过ListIndex属性来标识.由Path属性所设置的当前目录的ListIndex属性值总是-1,而它上面的目录的ListIndex属性值为-2,再上面的为-3,以此类推;而它所包含的子目录恰恰相反,紧挨着的第一个子目录的ListIndex属性值为0,往下一次加一.
                ListCount本属性返回当前目录下的所有子目录书.ListCount的值比最大的ListIndex的值大1.
                事件Change当选择一个新目录或通过代码改变了Path属性时触发该事件                  

                下面是示例代码:

    Private Sub Dir1_Change()             
                
    '将文件列表框的路径值,设置为目录列表框所选中的路径值
                File1.Path = Dir1.Path             
    End Sub

            3、文件列表框
                文件列表框用来显示当前目录中的部分或者全部文件.文件列表框的大部分属性和一般的列表框相同,都具有大小,位置,字体,颜色等以及List,ListCount,ListIndex等属性.下面是主要的属性:
                 属性Path本属性用于返回或设置运行时选择的路径以显示其下的文件,默认路径为当前路径.改变Dri属性会触发PathChange事件.                    
                      示例: File1.Path= Dri1.Path   
                 设置在目录列表框中选中的路径为文件列表的当前路径.
                 Pattern本属性用来确定程序运行时,列表框中显示那些类型的文件.除了使用”*” ,   ”?”等通配符外,在参数中还可以使用分号”;”来分割多种文件类型.例如:”*.ext;*.bat”                   
                 FileName本属性返回或设置所选文件的路径和文件名.可以从本属性值中返回当前列表中选择的文件名.路径可用Path属性单独检索.在功能上,本属性值与ListIndex等价.如果没有文件被选中,FileName属性将返回0长度的字符串.改变甭属性值可能会产生一个或多个如下事件:PathChange(如果改变路径),PatternChange(如果改变模式),DblClick(如果指定存在的文件)
                 事件Click当选择一个新的文件时触发该事件                 

                下面是示例代码:

    Private Sub File1_Click()
                    Picture1.Picture 
    = LoadPicture(Dir1.Path & "  " & File1.FileName)
                ‘在图片框中显示选定的图形文件.
    End Sub

            4、标准对话框
                CommonDialog控件提供了一组标准的操作对话框,进行诸如打开,和保存文件,设置打印选项,以及选择颜色和字体等操作.通过运行windows帮助引擎还能显示帮助.
                CommonDialog控件在visual basic和Microsoft  Windows动态链接库commdlg.dll的例程之间提供了一个接口.为了用这个控件创建一个对话框,commdlg.dll必须存在于microsoft  Windows的system目录下.然后再visual basic中选择工程/部件,并在显示的部件对话框中选中Microsoft   common Dialog Control 6.0,确定后,在工具栏里就显示了出来.如下图所示:
                在应用程序中要使用CommonDialog控件,可将其添加到窗体中并设置其属性.控件所显示的对话框有控件的方法确定.在运行时,当相应的方法被调用时,将显示一个对话框或是执行帮助引擎;在设计时,CommonDialog
                控件是以图标的形式显示在窗体中的.该图标的大小不能改变.
                使用指定的方法,CommonDialog控件能够显示下列对话框:
                      方法所显示的对话框
                      ShowOpen              显示[打开]对话框
                      ShowSave               显示[另存为]对话框
                      ShowColor              显示[颜色]对话框
                      ShowFont                显示[字体]对话框
                      ShowPrinter            显示[打印]或[打印选项]对话框
                      Showhelp               显示windows帮助引擎            
             下面是它的主要属性,方法:
                  属性Filer该属性应用于CommonDialog控件中的[打开][另存为]对话框.本属性用来返回或设置在对话框[类型]列表框中显示的过滤器.过滤的作用是确定对话框中文件列表框中显示的文件类型.例如:设置为*.txt时,将显示文本文件.要显示多种类型的文件,可以用管道(|)符号(ASCII124)将他们分开.管道符号前后不能加空格.如:*.rm|*.rmvb
                  Action该属性返回或设置一个表示所显示对话框类型的整数.具体如下.
                      设置数值说明
                      0         没有操作
                      1         显示[打开]对话框
                      2         显示[另存为]对话框
                      3         显示[颜色]对话框
                      4         显示[字体]对话框
                      5         显示[打印]或[打印选项]对话框
                      6         运行WINHLP32.EXE            
                 FileName本属性应用于CommonDialog控件的[打开][另存为]对话框.
                      本属性返回或设置所选文件的路径和文件名.如果在运行时被创建,FileName属性将返回0长度的字符串,表示当前没有选择文件.在CommonDialog控件里,可以在打开对话框之前设置FileName属性来设定初始文件名.
                      可以从本属性值中返回当前列表中选择的文件名.路径可用Path属性单独检索.在功能上,本属性值与ListIndex等价.如果没有文件被选中,FileName属性将返回0长度的字符串.
                      改变甭属性值可能会产生一个或多个如下事件:PathChange(如果改变路径),PatternChange(如果改变模式),DblClick(如果指定存在的文件)
                事件Click当选择一个新的文件时触发该事件                  

                下面是一个例子:
                我们在这里要做一个vcd的播放器下面是界面.
                下表是其中所用到的控件及其属性设置:
                      对象特性设置值
                      窗体名称          Frmvcd
                       BorderStyle    1
                       Caption           Vcd播放器
                      菜单标题文件                  
                       名称Mnufile
                      标题打开
                      名称Mnuopen
                      标题播放
                      名称Mnuplay
                      标题退出
                      名称Mnuexit                
                       标题选项
                      名称Mnuoption
                      标题连续播放
                      名称Mnurepeat
                      标题静音
                      名称Mnuslient
                      多媒体控件名称Mmcontrol
                      Picture控件名称Picture1
                      通用对话框名称Commondialog1     
                 
                下面是主要程序代码代码:

    Private Sub mnuopen_Click()  ’当点击菜单中的打开时执行
                 
                
    '在未选择文件时,文件名为空字符,播放菜单不可用
                mnuplay.Enabled =False
                CommonDialog1.FileName 
    = ""
                
    '下面语句设置文件过滤方式,可显示扩展名为avi,dat,wav和mid文件
                CommonDialog1.Filter = "(*.avi)|*.avi|(*.wave)|*.wav|(vcd 
                *.dat)|*.dat|(midi *.mid)|*.mid"
                '初始化文件过滤方式为*.avi
                CommonDialog1.FilterIndex = 1
                
    '建立打开方式的通用对话框,也可使用commondialog1.showopen
                CommonDialog1.Action = 1
                
    '打开一个文件前先关闭前一次被打开的多媒体设备
                MMControl1.Command = "close"
                
    Select Case CommonDialog1.FilterIndex
                    
    Case 1  '选择*.avi
                       '设置多媒体设备类型为avividio
                       MMControl1.DeviceType = "avividio"
                       
    '设置时间格式为帧
                       MMControl1.TimeFormat = 3
                       
    '设置播放的文件为通用对话框中选择的文件
                        MMControl1.FileName = CommonDialog1.FileName
                       
    '打开文件
                        MMControl1.Command = "open "
                    
    Case 2 '选择*.wav
                       '设置多媒体设备类型为waveaudio
                       MMControl1.DeviceType = "waveaudio"
                      
    '设置时间格式为帧
                      MMControl1.TimeFormat = 3
                      
    '设置播放的文件为通用对话框中选择的文件
                       MMControl1.FileName = CommonDialog1.FileName
                      
    '打开文件
                       MMControl1.Command = "open "
                    
    Case 3  '选择*.dat
                        '设置多媒体设备类型为Mpegvidio
                        MMControl1.DeviceType = "Mpegvidio"
                       
    '设置时间格式为帧
                       MMControl1.TimeFormat = 3
                       
    '设置播放的文件为通用对话框中选择的文件
                       MMControl1.FileName = CommonDialog1.FileName
                       
    '打开文件
                       MMControl1.Command = "open "
                    
    Case 4  '选择*.mid
                       '设置多媒体设备类型为waveaudio
                       MMControl1.DeviceType = "waveaudio"
                       
    '设置时间格式为帧
                       MMControl1.TimeFormat = 3
                       
    '设置播放的文件为通用对话框中选择的文件
                       MMControl1.FileName = CommonDialog1.FileName
                       
    '打开文件
                       MMControl1.Command = "open "
                
    End Select
                
    '设置hwnddisplay的值,使媒体文件能够在picture控件中播放
                MMControl1.hWndDisplay = Picture1.hWnd
                 
     
    End Sub

            (二)新建、修改、删除目录
             以上控件除了通用对话框(CommonDialog)之外一般只能显示当前的目录结构,对于在磁盘上新建、修改、删除目录却基本无能为力。
            我们先来看看通用对话框对文件夹的新建,修改和删除操作.
                1、新建目录
                我们只要在显示出来的通用对话框的空白位置,单击鼠标,选择“新建”即可在指定的路径下创建新的目录,或者点击通用对话框右上角的新建图表(如下图所示),也可以在指定的路径下创建新的目录
                2、修改文件夹名称
                可以在显示出来的通用对话框中,用鼠标右键点击选择所要修改的文件夹,再弹出的快捷菜单中,选择重命名,即可修改目录名称。如下图所示:
                3、删除文件夹
                同修改文件夹名称一样,我们只要选择删除即可。如上图所示。
                而且这种方法比RmDir更简便,它还可以删除包含有文件和子文件夹的文件夹。
                
                除了以上控件,windows还给我们提供了一个叫做FileSystemObject(简称FSO)对象。FSO对象模型中包括了计算机文件系统所有的对象。见下表。利用这些对象可以更方便的操作文件系统。
                对象功能
                      Drive允许收集系统的驱动器信息,诸如驱动器的可用空间
                      Folder允许创建、删除或移动文件夹,并向系统查询文件夹的名称、路径等等
                      Files允许创建、删除或移动文件,并向系统查询文件的名称、路径等等
                      FileSysterObject此为主要对象,提供一整套用于创建、删除、搜集相关信息,以及通常的操作驱动器,文件夹,和文件的方法。
                      TextStream允许读写文本文件

               下面我们一起来看看怎样用FSO对象来显示、新建、修改以及删除目录。
                FSO对象模型包含在Scripting的类型库中,此类型库存在于Scrrun.dll文件中.使用FSO对象模型,首先要建立一个FileSystemObject对象.有两种方法可以实现.一种是从”工程”菜单中的”引用”对话框选择”Microsoft      Scripting Runtime”项,然后在代码窗口中声明一个FileSystemObject类型的变量.语句如下:
                    Dim fso As New FileSystemObject
                另一种方法是在代码中使用CreatObject方法动态的创建一个FileSystemObject对象.语句如下:
                   Dim fso As  Object ‘ 声明对象变量
                   Set fso = CreatObject(“Scripting. FileSystemObject”)  ‘创建FSO对象
                我们具体看看FileSystemObject的主要属性.
                1、驱动器
                (1)  Drives属性是FileSystemObject对象的唯一属性,它返回Drives集合中所有可用驱动器的只读集合。对于可删除的驱动器,不需要将媒体插入其中,就可以在Drives集合中显示出来。下面是它的主要属性有两个:一个是Count,另一个是Item.Count属性返回Drives集合或Dictionary对象中的条目数.Item属性用来返回或设置Drives集合或Dictionary对象中与指定关键字相关的项目.
                下面代码说明了如何获得Drives集合,以及如何用For Eacn……Next语句来访问该集合中的每个Drive:

    Sub ShowDriveList()
                
    Dim fs As Object, d, dc, s,n  
                ‘创建文件系统对象
                
    Set fs = CreatObject(“Scripting. FileSystemObject”)
                ‘创建驱动器集合
                
    Set dc= fs.Drives
                ‘取的驱动器对象
                
    For Each d in dc
                   s 
    = s & d.DriveLetter & “-” ‘格式化文本
                   
    If d.DriverType = Remote Then   ‘如果是Remote类型的驱动器
                      n 
    = d.ShareName        ‘取得它的共享名
                   
    Else
                      n 
    = d.volumeName     ‘否则取得它的卷标
                   
    End if
                   s
    = s& n & vbCrLf      ‘格式化文本
                
    Next
                
    MsgBox s          ‘显示文本
    End sub

               (2) 当然我们也可以用Drive对象.Drive对象提供了对磁盘驱动器或网络共享属性的访问方法.下面是它的主要属性及其解释:             
                  Availablespace驱动器已用空间DriveLetter驱动器指定的字母
                  Freespace驱动器剩余空间DriverType驱动器类型
                  TotalSize驱动器全部空间FileSystem驱动器文件系统
                  IsReady驱动器是否已准备Path驱动器根目录
                  SerizlNumber驱动器序列号VolumeName驱动器卷标
                  ShareName驱动器共享名              
              主要的方法就是GetDrive,此方法用来访问一个已有的驱动器,该方法返回一个与指定路径中的驱动器相对应的Drive对象。下面的代码中,我们将说明怎样取得一个指定的驱动器的相关信息:

    Sub ShowFreeSpace(drvPath)     ‘显示指定目录下的驱动器的信息
                  Dim fs As Object, d, s      
                  Set fs 
    = CreateObject("Scripting.FileSystemObject") ‘创建文件系统对象
                  Set d 
    = fs.GetDrive(fs.GetDriveName(drvPath))  ‘创建并得到指定取目录下的驱动器
                  s 
    = "Drive" & UCase(drvPath) & "-"   ‘格式化文本
                  s 
    = s & d.VolumeName & vbCrLf   ‘得到驱动器的卷标
                  s 
    = s & "FreeSpace:" & FormatNumber(d.FreeSpace / 10240)  
                ‘计算驱动器的剩余磁盘空间
                  s 
    = s & "Kbytes"
                  MsgBox s    ‘显示
    End Sub

            下面是filesystemobject的其他方法
                 CreateFolder该方法的作用是创建一个文件夹。所要创建的文件夹必须是不存在的,否则出错。
                 CreateTextFile该方法的作用是产生一个指定的文件名,并返回一个TextStream对象,该对象可被用于对指定的文件进行读写。如果overwrite参数为False或未指定,对于一个已存在的文件,将产生错误。
                 DeleteFile该方法的作用是删除一个指定的文件。如果指定的文件不存在,则出错。
                 DeleteFolder该方法的作用是删除一个文件夹及其内容。如果没有发现匹配的文件夹则出错。该方法不能确定文件夹中是否包含内容。
                 DriveExists该方法的作用是用来确定驱动器是否存在。如果指定的驱动器存在,则返回True,否则返回False。但对于可删除介质的驱动器,即使没有介质存在,DriveExists方法也返回True,因此最好使用IsReady属性确定驱动器是否准备就绪。
                 FileExists该方法的作用是判断指定的文件对象是否存在于当前文件夹
                 FolderExists该方法的作用是判断指定的文件夹对象是否存在于当前文件夹
                 GetDrive该方法的作用是返回一个在指定路径中的与某个驱动器相对应的Drive对象。对于网络驱动器,将首先检查该共享是否存在。
                 GerDriveName该方法的作用是返回包括某一指定路径上的驱动器名的字符串。如果驱动器不能确定,则返回一个0长度字符串。该方法只对指定的路径起作用,它并不试图解析路径,也不检查指定路径是否存在。
                 GetExtensionName该方法的作用是返回指定路径中最后一个组成部分的扩展名。
                 GetFile该方法的作用是返回指定路径中与某一文件相关的File对象。一定要保证所指定的文件是实际存在的。否则将产生错误。
                 GetFileName该方法的作用是返回指定路径的最后一个组成部分的文件名。
                 GetFolder该方法的作用是返回指定路径上的与某个文件夹相关的Folder对象.要保证指定的文件夹是实际存在的,否则会出错.     使用Folder对象的第一部就是先用FileSystemObjectd的GetFolder方法得到Folder对象
                      GetParentFolderName该方法的作用是返回一个包含指定路径上的最后一个组成部分的父文件夹的名称。
                      MoveFile该方法的作用是将一个或多个文件从一个地方移动到另一个地方。
                      MoveFolder该方法的作用是移动一个或多个文件夹,如果源路径包含通配符,或目的路径以斜杠(/)为结束,则表明目的路径为已存在的路径,在此文件夹中移动相匹配的文件夹.否则,认为目的路径是一个要创建的目标文件夹的名字.如果目的路径为一个已存在的文件或目的路径为一个目录,则出错.如果没有任何文件与源路径中的通配符相匹配也出错.
                      OpenTextFile该方法可用来打开一个指定的文件,并返回一个TextStream对象。用于读文件或追加文件。             
               2、文件夹
                   对文件夹的操作,我们可以使用folder对象,它提供了对文件夹所有属性和方法的访问.下表市对其主要属性的解释:            
                      DateCreated返回指定文件或文件夹的创建日期和时间
                      DateLastAccessed返回最后一次访问指定文件或文件夹的日期和时间
                      Drive返回指定文件或文件夹所在的驱动器符号
                      Files返回由File对象组成的所有Files集合,这些Files集合包含在指定的文件夹中,包括设置了隐藏和系统文件属性的那些文件夹
                      IsRootFolder如果指定的文件夹是根文件夹,则返回True,否则返回False
                      Name设置或返回指定文件或文件夹的名称
                      ParentFolder返回指定文件或文件夹的父文件夹的Folder对象
                      Path返回指定文件、文件夹或驱动器的路径
                      ShortName返回较早的需要8.3文件命名约定的程序所使用的短文件名
                      ShortPath返回较早的需要8.3文件命名约定的程序所使用的短路径
                      Size对文件来说,本属性返回以字节为单位的文件大小;对文件夹来说,返回以字节为单位包括其中所有文件或子文件夹的大小
                      SubFolders返回包含所有文件夹的一个Folders集合,这些文件夹包含在某个特定文件夹中,  包括设置了隐藏和系统文件属性的那些文件夹
                      Type返回指定文件或文件夹的类型信息.            
                使用Folder对象的第一部就是先用FileSystemObjectd的GetFolder方法得到Folder对象, 该方法的作用是返回指定路径上的与某个文件夹相关的Folder对象.要保证指定的文件夹是实际存在的,否则会出错.
                
                让我们来看一看其中的各种属性及其用法吧.
                (1)Attributes属性可以返回文件或文件夹的属性,或者设置他们的新属性.所设属性可以是以下值中任意一个或多个的逻辑组合.             
                      常数值说明
                      Normal0为一般文件,不设置属性
                      ReadOnly1为只读文件,属性为读/写
                      Hidden2为隐藏文件,属性为读/写
                      System 4为系统文件,属性为读/写
                      Volume8为磁盘驱动器卷标,属性为只读
                      Directory16为文件夹或目录,属性为只读
                      Archive32在上次备份后已经改变的文件,属性为读/写
                      Alias64为链接或快捷方式,属性为只读
                      Compressed128为压缩文件,属性为只读             
                (2)DateCreated属性返回指定文件或文件夹的创建日期和时间,本属性为只读属性.
                下面是用法:

    Sub ShowFolderList( folderspec )  ‘folderspec 为文件夹名称
                   
    Dim fs , f, f1,fc , s
                   
    Set fs = CreateObject(“Scripting.FileSystemObject”)
                   
    Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
                   
    Set fc = f.SubFolders ‘得到folder对象所包含的文件夹的folder集合
                   
    For Each fi in fc      ‘访问folder集合中的每一个folder
                s
    = s &  f1.name       ‘格式化要显示的文本
                s
    = s & vbCrLf
                   
    Next  
                   
    MsgBox s   ‘用对话框显示信息
    End Sub

            (3)DateLastModified属性用来返回最后一次修改指定文件或文件夹的日期和时间,本属性为只读.
                下面代码用一个文件举例说明了DataLastModified属性的用法:

    Sub ShowFileAccessInfo(filespec)
                
    Dim fs,f,s
                
    Set fs = CreateObject(“Scripting.FileSystemObject”)
                    
    Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
                s
    = Ucase(filespec) & vbCrLf
                s
    = s& “Created:” & f.DateCreate & vbCrLf
                s
    = s & “Last Accessed :” & f.DateLastAccessed & vbCrLf
                s
    = s & “Last Modifide :” & f.DateLastModified
                
    MsgBox s, 0,”File Access Info”
    End Sub

            (4)Type属性返回关于某个文件或文件夹类型的信息.例如对于以.TXT结尾的文本文件来说,本属性会返回”Text
                Document”.下面的代码举例说明了返回某个文件夹类型的Type属性的用法.在这个示例中,试图将Recycle
                Bin的路径或其他唯一的文件夹提供给过程.

    Sub ShowFileSize( filespec )
                
    Dim fs,f,s
                
    Set fs = CreateObject(“Scripting.FileSystemObject”)
                    
    Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
                S 
    = Ucase(f.Name) & “is a ” & f.Type    ‘格式化文本
                
    MsgBox s,o, “File Size Info ”       ‘显示信息
    End Sub

           主要方法有:
                (1)Copy方法:
                该方法的作用是拷贝一个指定的文件或文件夹到指定的目录.该方法和FileSystemObject.CopyFile方法的作用相同             
                (2)CreateTextFile方法:               
                该方法的作用是产生一个指定的文件名,并返回一个TextStream对象,该对象可被用于对指定的文件进行读写.如果overwrite参数为False或未指定,对于一个已存在的文件,将产生错误.               
                (3)Delete方法:               
                该方法的作用是删除一个指定的文件或文件夹.如果指定的文件或文件夹不存在,则发生一个错误.对于一个File或Folder来说,Delete方法的运行的结果和执行FileSystemObject.DeleteFile或FileSystemObject.DeleteFolder的结果是一样的.Delete方法执行时与指定的文件夹中时候有内容无关.             
                (4)Move               
                该方法用来将一个指定的文件夹或文件从一个地方移动到另一个地方,如果只是想移动一个文件或文件夹,则使用Move方法和使用FileSystemObject.MoveFile或FileSystemObject.MoveFolder操作的结果是一样的,但是如果要同时移动多个文件或文件夹,则只能使用后者.
                
                讲了这么多,还是让我们来看一下具体的实现方法:
                1、  创建一个文件夹
                可以使用FileSystemObject对象的CreateFolder方法来实现,但要创建的文件夹必须不存在,否则出错。特别注意,FileSystemObject对象不能创建或删除驱动器。
                下面的例子可以在应用程序所在目录下创建一个文件夹

    Sub CreateFolder(folderspec)
                
    Dim fs 
                
    Set fs = CreatObject(“Scripting.FileSystemObject”)
                fs.CreaterFolder(folderspec )
    End sub

                2、  删除一个或多个文件夹
                可以使用FileSystemObject对象的Deletfolder方法,或者folder对象的Delete方法

    Sub DeleteFolder(folderspec)
                
    Dim fs 
                
    Set fs = CreatObject(“Scripting.FileSystemObject”)
                fs.DeleteFolder(folderspec 
    &  “100”)
                ‘
    Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
                ‘f.Delete 
    End sub

             3、移动一个或多个文件夹
                 可以使用FileSystemObject对象的Movefolder方法,或者folder对象的Move方法

    Sub MoveFolder(folderspec)
                
    Dim fs 
                
    Set fs = CreatObject(“Scripting.FileSystemObject”)
                fs.MoveFolder(folderspec   , “c:
    windows”)
                ‘
    Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
                ‘f.Move(“c:
    windows”)
    End sub

             4、一个或多个文件夹
                     可以使用FileSystemObject对象的Copyfolder方法,或者folder对象的Copy方法。

    Sub CopyFolder(folderspec)
                
    Dim fs 
                
    Set fs = CreatObject(“Scripting.FileSystemObject”)
                fs.CopyFolder(folderspec   , “c:
    windows”)
                ‘
    Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
                ‘f.Copy(“c:
    windows”)
    End sub

     

             二、使用visual basic所提供的语句对目录操作
                1、创建一个新目录或文件夹
                实现这一步我们可以使用vb中的MkDir语句。
                格式:MkDir  path
                作用:创建一个新的目录和文件
                说明:path
                指定所要创建的目录或文件夹的字符串表达式。Path可以包含驱动器。如果没有指定驱动器,则MkDir会在当前驱动器上创建新的目录或文件夹。如果指定的目录或文件夹已经存在,那么就会产生一个错误。
                例如: MkDir “c:/windows/100”
                
                2、修改目录名
                vb中提供了一个Name语句可以实现这些功能。
                格式:  Name  oldpathname  As newpathname
                作用: 从命名一个文件、目录或文件夹。
                说明: 
                oldpathname字符串表达式,指定已存在的文件名和位置,可以包含目录或文件夹以及驱动器名。newpathname字符串表达式,指定新的文件名和位置,可以包含目录或文件夹以及驱动器名。并且oldpathname和newpathname必须位于同一个驱动器上。如果newpathname指定的路径存在但不同于oldpathname指定的路径,则Name语句会将文件移动到新的目录或文件夹,并在必要时从新命名文件.如果newpathname和oldpathname路径不同而文件名相同,那么Name只会移动文件到新的位置,并保持文件名不变.
                       
                Name语句可以将文件从一个目录或文件夹移动到另一处,但无法移动目录或文件夹.而且不能在一个已经打开的文件上使用Name,否则会产生错误.因此在改变名称之前,一定要关闭文件.Name参数中不能包括多字符(*)和单字符(?)的通配符.
                例如:Name “c:/windows/100” As “c:/windows/200”
                
                3、删除目录
                
                对于删除目录,我们可以使用RmDir语句
                格式:RmDir  path
                作用:删除一个目录或文件夹。
                说明:path
                指定所要删除的目录或文件夹的字符串表达式。Path可以包含驱动器。如果没有指定驱动器,则RmDir会在当前驱动器上删除目录或文件夹。如果想要使用RmDir删除一个含有文件的目录或文件夹,则会发生错误。只有用Kill语句删除所有文件后,才能用来RmDir删除目录或文件夹。
                例如:RmDir “c:/windows/200”
                在此我们举一个例子看一看如何获得一个文件架下的所有子目录.下面是源代码:

    Private Sub searchdir()
                  
    Dim spath As String, sdir As String
                  
    Dim booldir As Boolean '是否有子目录的标志
                  booldir = False  '初始化标志
                  spath = Dir1.Path  '选择路径
                  If Right(spath, 1<> "" Then  '判断路径最后是否以结尾
                       spath = spath & ""    '不是,则加上
                  sdir = Dir(spath & "*.*", vbDirectory) '得到当前路径下的所有文件和目录
                  While sdir <> ""   '如果不为空
                      If sdir <> "." And sdir <> ".." Then '并且不是这两种文件夹
                          booldir = True      '那么,该目录下有子目录
                          MsgBox "该目录下有子目录:" & sdir   '显示信息
                      End If
                      sdir 
    = Dir()
                  
    Wend
                  
    If Not booldir Then   '标志为假,该目录下没有子目录
                      MsgBox "该目录下没有子目录"
                  
    End If
    End Sub

     

            三、使用windows提供的API函数
                下面是windows中提供的对于目录进行操作的API函数及其功能:
                      CreateDirectory, CreateDirectoryEx创建一个新目录
                      GetCurrentDirectory在一个缓冲区中装载当前目录
                      GetDiskFreeSpace,
                      GetDiskFreeSpaceEx获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量
                      GetDriveType判断一个磁盘驱动器的类型
                      GetFullPathName获取指定文件的完整路径名
                      GetLogicalDrives判断系统中存在哪些逻辑驱动器字母
                      GetLogicalDriveStrings获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径
                      GetSystemDirectory这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作
                      GetTempPath获取为临时文件指定的路径
                      GetVolumeInformation获取与一个磁盘卷有关的信息
                      GetWindowsDirectory这个函数能获取Windows目录的完整路径名。在这个目录里,保存了大多数windows应用程序文件及初始化文件
                      RemoveDirectory删除指定目录
                      SetCurrentDirectory设置当前目录
                      SetVolumeLabel设置一个磁盘的卷标(Label)

                让我们通过几个例子来详细的了解一下其中主要的几个函数及其用法:
                1、GetLogicalDrives
                作用:判断系统中存在哪些逻辑驱动器字母
                声明形式:Declare Function GetLogicalDrives Lib "kernel32" Alias  "GetLogicalDrives" () As Long
                说明:此函数的返回值类型为Long,这个结构中的二进制位标志着存在哪些驱动器。其中,位0设为1表示驱动器A:存在于系统中;位1设为1表示存在B:驱动器;以次类推
                2、GetDriveType
                作用:判断一个磁盘驱动器的类型
                声明形式:Declare Function GetDriveType Lib "kernel32" Alias  "GetDriveTypeA" (ByVal nDrive As String) As Long
                说明:此函数的返回值类型为Long,如驱动器不能识别,则返回零。如指定的目录不存在,则返回1。如执行成功,则用下述任何一个常数指定驱动器类型:DRIVE_REMOVABLE(表示磁盘可以从驱动器上移走,通常是软驱), DRIVE_FIXED(磁盘不能从驱动器上移走,通常为本地硬盘), DRIVE_REMOTE(驱动器是远程网络驱动器), DRIVE_CDROM(驱动器是CD-ROM驱动器) 或 DRIVE_RAMDISK(驱动器是RAM驱动器)
                参数为String类型,包含了驱动器根目录路径的一个字串
                下面是示例代码:

    ‘ 定义常数变量
                
    Private Const DRIVE_CDROM = 5  ‘表示光盘驱动器
                
    Private Const DRIVE_FIXED = 3    ‘表示硬盘驱动器
                
    Private Const DRIVE_RAMDISK = 6  ‘表示RAM驱动器
                
    Private Const DRIVE_REMOTE = 4   ‘表示网络驱动器
                
    Private Const DRIVE_REMOVABLE = 2  ‘表示软盘驱动器
     函数声明
    Private Declare Function GetDriveType Lib "kernel32" Alias 
                
    "GetDriveTypeA" (ByVal nDrive As StringAs Long
                
    Private Sub Form_Load()
                  
    Dim temp As Long
                  temp 
    = GetDriveType("e:") ‘取的e:盘驱动器类型
                  
    Select Case temp      ‘比较
                         
    Case DRIVE_CDROM
                              
    MsgBox "DRIVE_CDROM: 光盘驱动器"
                         
    Case DRIVE_FIXED
                              
    MsgBox "DRIVE_FIXED: 硬盘驱动器"
                         
    Case DRIVE_RAMDISK
                              
    MsgBox "DRIVE_RAMDISK: RAM驱动器"
                         
    Case DRIVE_REMOTE
                              
    MsgBox "DRIVE_REMOTE: 网络驱动器"
                         
    Case DRIVE_REMOVABLE
                              
    MsgBox "DRIVE_REMOVABLE: 软盘驱动器"
                   
    End Select
    End Sub

              以上代码可以判断e:的类型。
            3、GetDiskFreeSpaceEx
                作用:获取与一个磁盘的组织以及剩余空间容量有关的信息
                声明形式:Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias  "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As LARGE_INTEGER, lpTotalNumberOfBytes  As LARGE_INTEGER, lpTotalNumberOfFreeBytes As LARGE_INTEGER) As Long
                说明:此函数的返回值类型为Long,非零表示成功,零表示失败。会设置GetLastError.
                在采用FAT16格式的windows95系统中,如一个驱动器(分区)的容量超过了2GB,则不应使用这个函数。此时,这个函数能识别的最大分区容量只有2GB
                参数说明:
                      参数类型及说明
                      lpRootPathNameString,不包括卷名的磁盘根路径名
                      lpFreeBytesAvailableToCallerLARGE_INTEGER,指定一个变量,用于容纳调用者可用的字节数量
                      lpTotalNumberOfBytesLARGE_INTEGER,指定一个变量,用于容纳磁盘上的总字节数
                      lpTotalNumberOfFreeBytesLARGE_INTEGER,指定一个变量,用于容纳磁盘上可用的字节数

                LARGE_INTEGER结构用来代表一个64位带符号的整数值,它的定义如下:
                Type LARGE_INTEGER ' 8 Bytes
                lowpart As Long
                highpart As Long
                End Type
                其中lowpart为 Long,指定低32位
                highpart 为 Long,指定高32位
                LARGE_INTEGER结构与FILETIME结构内部完全一致。
                请看下面示例:

    Private Type LARGE_INTEGER  ' 8 Bytes,定义一个LARGE_INTEGER结构
                lowpart As Long
                highpart 
    As Long
    End Type

    ‘函数声明
               
    Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias  "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String,     lpFreeBytesAvailableToCaller As LARGE_INTEGER, lpTotalNumberOfBytes  As LARGE_INTEGER, lpTotalNumberOfFreeBytes As LARGE_INTEGER) As Long

    定义变量
                
    Dim RootPathName As String
                
    Dim FreeBytesAvailabletoCaller As LARGE_INTEGER
                
    Dim TotalNumberOfBytes As LARGE_INTEGER
                
    Dim TotalNumberOfFreeBytes As LARGE_INTEGER
                 
    Private Sub Form_Load()
                  
    Dim temp As Long
                  
    Dim tempa, tempb, tempc
                  RootPathName 
    = "c:"
                  ‘取得磁盘空间
                  temp 
    = GetDiskFreeSpaceEx(RootPathName, 
                FreeBytesAvailabletoCaller, TotalNumberOfBytes, 
                TotalNumberOfFreeBytes)
                  ‘格式化文本,并显示在text控件
                  Text1.Text 
    = Text1.Text + "磁盘容量:" + Chr(13+ Chr(10)
                 tempa 
    = TotalNumberOfBytes.highpart * 65635 + 
                TotalNumberOfBytes.lowpart ‘计算容量
                  tempa 
    = 0 – tempa ‘我的驱动器大于2G,要得到正确的值,进行了调整
                  Text1.Text 
    = Text1.Text + CStr(tempa) + "字节" + Chr(13+ Chr(10)
                  tempa 
    = Format(tempa / 1024 / 1024 / 1024"0.00")
                  Text1.Text 
    = Text1.Text + tempa + "G" + Chr(13+ Chr(10)
                  ‘取得磁盘可用空间
                  Text1.Text 
    = Text1.Text + "磁盘可用空间:" + Chr(13+ Chr(10)
                 tempb 
    = TotalNumberOfFreeBytes.highpart * 1000 + 
                TotalNumberOfFreeBytes.lowpart ‘计算
                  Text1.Text 
    = Text1.Text + CStr(tempb) + "字节" + Chr(13+ Chr(10
                ’格式化文本并显示
                 tempb 
    = Format(tempb / 1024 / 1024 / 1024"0.00")
                 Text1.Text 
    = Text1.Text + tempb + "G" + Chr(13+ Chr(10)
                  ‘取得磁盘已用空间
                  Text1.Text 
    = Text1.Text + "磁盘已用空间:" + Chr(13+ Chr(10)
                 tempa 
    = 0 – tempa  ‘调整
                   tempc 
    = tempa – tempb  ‘计算
                   tempc 
    = 0 - tempc
                  Text1.Text 
    = Text1.Text + CStr(tempc) + "G" + Chr(13+ 
                
    Chr(10)’格式化文本,并显示
    End Sub

                以上代码显示了c:上的容量,可用空间和已用空间。
            4、CreateDirectory, CreateDirectoryEx
                作用:创建一个新目录
                声明形式:Declare Function CreateDirectory& Lib "kernel32" Alias  "CreateDirectoryA" (ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)
                Declare Function CreateDirectoryEx& Lib "kernel32" Alias        "CreateDirectoryExA" (ByVal lpTemplateDirectory As String, ByVal lpNewDirectory As String, lpSecurityAttributes As            SECURITY_ATTRIBUTES)
                说明:此函数的返回值类型为Long,非零表示成功,零表示失败。会设置GetLastError
                参数说明:
                      参数类型及说明
                      lpTemplateDirectoryString,指定一个模板目录的名字,从中复制默认属性(比如目录中文件的默认压缩方式)。如设为vbNullString,则表示不使用模板
                      lpNewDirectoryString,新目录的名字
                      lpSecurityAttributesSECURITY_ATTRIBUTES,这个结构定义了目录的安全特性——如果操作系统支持的话

                示例程序代码如下:

    ‘定义结构
                
    Private Type SECURITY_ATTRIBUTES
                   nLength 
    As Long
                   lpSecurityDescriptor 
    As Long
                   bInheritHandle 
    As Long
                
    End Type

      ‘函数声明
                
    Private Declare Function CreateDirectory& Lib "kernel32" Alias  "CreateDirectoryA" (ByVal lpNewDirectory As String,             lpSecurityAttributes As SECURITY_ATTRIBUTES)
                
    Private Declare Function CreateDirectoryEx& Lib "kernel32" Alias  "CreateDirectoryExA" (ByVal lpTemplateDirectory As String, ByVal  lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES)
                 
    Private Sub form_load()
                  
    Dim temp As SECURITY_ATTRIBUTES
                  CreateDirectory 
    "c: est", temp  ‘创建文件夹
    End Sub

                以上代码在c:下创建一个名为test的文件夹
            5、RemoveDirectory
                作用:移除一个目录
                声明形式:Declare Function RemoveDirectory Lib "kernel32" Alias  "RemoveDirectoryA" (ByVal lpPathName As String) As Long
                说明:此函数的返回值类型为Long,非零表示成功,零表示失败。会设置GetLastError.
                在调用这个函数前,目录必须为空
                参数说明:
                      参数类型及说明
                      lpPathName为String类型,要删除的那个目录的名字

                示例代码如下:

    ‘函数声明
                
    Private Declare Function RemoveDirectory Lib "kernel32" Alias  "RemoveDirectoryA" (ByVal lpPathName As StringAs Long
               
     
    Private Sub form_load()
                  
    Dim temp As String
                  temp
    = “c:test”
                  RemoveDirectory temp  ‘移除文件夹
    End Sub

                以上代码删除c:下一个名为test的文件夹。
             6、SetCurrentDirectory
                作用:设置当前目录
                声明形式:Declare Function SetCurrentDirectory Lib "kernel32" Alias  "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
                说明:此函数的返回值类型为Long,非零表示成功,零表示失败。会设置GetLastError
                参数说明:
                      参数类型及说明
                      LpPathNameString,新当前目录的路径

                示例代码如下:

    ‘函数声明
                
    Private Declare Function SetCurrentDirectory Lib "kernel32" Alias  "SetCurrentDirectoryA" (ByVal lpPathName As StringAs Long

     
    Private Sub form_load()
                  SetCurrentDirectory 
    "c:"  ‘设置当前目录
     
    End Sub

                以上代码将c:设置为当前目录
            7、GetSystemDirectory
                作用:这个函数能取得Windows系统目录(System目录)的完整路径名。在这个目录中,包含了所有必要的系统文件。根据微软的标准,其他定制控件和一些共享组件也可放到这个目录。通常应避免在这个目录里创建文件。在网络环境中,往往需要管理员权限才可对这个目录进行写操作
                声明形式:Declare Function GetSystemDirectory Lib "kernel32" Alias  "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
                说明:此函数的返回值类型为Long,装载到lpBuffer缓冲区的字符数量。如lpBuffer不够大,不能容下文件名,则返回要求的缓冲区长度
                参数说明:
                      参数类型及说明
                      lpBufferString,用于装载系统目录路径名的一个字串缓冲区。它应事先初始化成nSize+1个字符的长度。通常至少要为这个缓冲区分配MAX_PATH个字符的长度
                      nSizeLong,lpBuffer字串的最大长度

                示例代码如下:

    ‘函数声明
                
    Private Declare Function GetSystemDirectory Lib "kernel32" Alias  "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As  LongAs Long
               
     
    Private Sub form_load()
                  
    Dim buffer As String
                  
    Dim size As Long
                  size 
    = 255
                  buffer 
    = size + 1
                  GetSystemDirectory buffer, size  ‘将系统路径存放在buffer中
                  
    MsgBox buffer   ‘显示路径
     
    End Sub
               以上代码获取了windows系统目录的完整路径。
                 
           第二部分  文件操作
             文件可以永久的存储信息。应用程序中如果想长期保存和访问数据,就必须将数值存储到文件中。这些文件主要包括顺序文件、随机文件、二进制文件。
             顺序文件就是普通的文本文件,任何文本编辑器都可以读写这种文件。读写顺序文件时,每次只能按顺序读写一行,每行的长度可以变化。顺序文件一般用于存储字符、数字或者其他可用ASCII字符表示的数据类型,但不能存储像位图之类的信息,这些信息应该用二进制方式表示。
                随机文件时可以按任意次序读写的文件,每行或者每个记录的长度是固定的。随机文件的操作与顺序文件有些不同。使用顺序文件,只需要随便指定一个变量来存储数据项的内容就可以了,不必担心数据项的字符串会过长;而使用随机文件时,因为文件中的每个记录都是等长的,因此用于保存数据的变量必须与文件中的记录类型一致。
             二进制文件存放的时字节信息,适用于存放任意结构的数据。从二进制文件可以察看指定字节的内容,它是唯一支持到任意位置读写任意长度数据的文件类型。
            除了以上分法,文件还以不同的存储格式分为后缀名不同的文件。
                一、使用现成的控件
                (一)显示文件
                因为不同文件的存储格式的差异,所以,只有用适当的方法才能正确的显示不同的文件。表现在表层,也就是不同的文件后缀名不同,而且不同的应用软件只能读取和显示某种或几种不同格式的文件。如:以.DOC为后缀名的文件,用WORD就可以打开,但是用记事本就无法正确显示.所以,VB中就给我们提供了不同的控件来显示不同的文件。
                在此我们以text控件为例子,看一看用它是怎样显示文件的。
    Private Sub mnuopen_Click()  ’当点击菜单中的打开文件时执行
                
    Dim filepath as Sting
                
    Dim strLine As String
                
    '在未选择文件时,text.text为空字符,,不显示任何内容
                    text1.text = “”
                CommonDialog1.FileName 
    = ""
                
    '下面语句设置文件过滤方式,可显示扩展名为txt文件
                CommonDialog1.Filter = "(*.txt)|*.txt"
                
    '建立打开方式的通用对话框,也可使用commondialog1.showopen
                CommonDialog1.Action = 1
                filepath
    =CommonDialog1.FileName ‘得到选择的文件
                Open filepath 
    For Input As #1    打开选择的文件
                
    Do Until EOF(1)      ‘显示打开的文件
                        Line Input #
    1, strLine
                        text1.Text 
    = text1.Text + strLine + Chr(13+ Chr(10)
                
    Loop
                Close #
    1 ‘关闭打开的文件
    End Sub

             除了vb自带的控件外,我们还可以使用fileSystemObject文件系统对象,file对象,以及files集合。下面我们给出两个例子,更多更详细的内容请参考前面目录部分。
                下面代码举例说明了如何获得一个file对象,以及如何察看它的一个属性。

    Sub ShowFileInfo(filespec)
                  
    Dim fs, f, s
                  
    Set fs = CreateObject("scripting.FileSystemObject")
                  
    Set f = fs.GetFile(filespec)
                  s 
    = f.DateCreated
                  
    MsgBox s
    End Sub

            对于如何获得一个files集合,以及如何用For Each……Next语句来访问这个集合中的每个file,我们可以参考下面的例子: 

    Sub ShowFolderList( folderspec )  ‘folderspec 为文件夹名称
                   
    Dim fs , f, f1,fc , s
                   
    Set fs = CreateObject(“Scripting.FileSystemObject”)
                   
    Set f = fs.GetFolder(folderspec) ‘得到folderspec文件夹相关的folder对象
                   
    Set fc = f.Files ‘得到folder对象所包含的文件夹的files集合
                   
    For Each fi in fc      ‘访问folder集合中的每一个folder
                  s
    = s &  f1.name       ‘格式化要显示的文本
                  s
    = s & vbCrLf
                   
    Next  
                   
    MsgBox s   ‘用对话框显示信息
    End Sub

                现成的控件一般只能显示文件,如果要进行更多的操作,请看下面的内容。
         二、使用VisualBasic提供的语句
            (一)打开和关闭文件
             1、顺序文件
                打开顺序文件,我们可以使用Open语句。它的格式如下:
                Open  pathname  For [Input |Output |Append] As [#]filenumber [Len =
                buffersize]
                说明:  (1)参数pathname 表示要打开的文件名,文件名可以包含有驱动器和目录
                 (2)Input Output
                和Append用于设置顺序文件的打开方式。其中,Input表示从打开的文件中读取数据。以这种方式打开文件时,文件必须存在,否则会产生错误。Output表示向打开的文件中写入数据。以这种方式打开文件时,文件中原有的数据将被覆盖,新的数据将从文件开始写入。如果文件不存在,则创建一个新文件。Append表示向打开的文件中添加数据。以这种方式打开时,文件中原有的数据将被保留,新的数据将从文件为开始添加。如果文件不存在,则创建一个新文件。
                 (3)As[#]filenumber
                子句用于为打开的文件指定文件号.对文件进行读写操作时,要用文件号表示该文件.文件号是介于1~511之间的整数,既可以是数字,又可以是变量.也可以省略不用.
                (4)当在文件与程序之间拷贝数据时,Len=buffersize子句指定缓冲区的字符数.
                例如: Open App.Path + "/test.dat" For Output As 1
                          Open App.Path + "/test.dat" For Output As 1
                这两句代码在当前应用程序所在目录下创建了一个名为test.dat的文本文件,分配文件号为1.
                          Open App.Path + "/test.dat" For Input As [#]filenumber
                这条语句是从文本文件中读取数据.
                          Open App.Path + "/test.dat" For Append As [#]filenumber
                这条语句则是像文本文件中添加数据
             2、随机文件
                操作随机文件之前,首先必须定义用于保存数据项的记录类型.该记录是用户自定义数据类型,他们是随机文件中存储数据的基本结构.例如:
                
                Type Student
                   No As Integer
                   Name As String * 20
                   age As Integer
                End Type
                
                Dim Stud As Student  ‘定义一个可以存放学生材料的变量
                随机文件中,所有的数据都将保存到若干个结构为Student类型的记录中, 而从随机文件中读出的数据则可以存放到变量Stud中.
                之后我们就可以打开并读写文件了.下面是打开随机文件的语法格式:
                Open filename For Random as [#]filenumber Len = Reclength
                说明: (1)参数filename 和filenumber 分别表示文件名或文件号.
                (2)关键字Random 表示打开的是随机文件
                (3)Len子句用于设置记录长度,长度由参数Reclength指定.Reclength的值必须大于0,而且必须与定义的记录结构的长度一致.计算记录长度的方法是将记录结构中每个元素的长度相加.例如前面声明的Student的长度应该是2+20+2=24字节.
                打开一个记录类型为Student 的随机文件的方法是:
                Open "c:/Student.txt " For Random As #1 Len = 25
            3、二进制文件
                   打开二进制文件的语法格式如下:
                 Open pathname For Binary As [#]filenumber
                说明:(1) 参数filename 和filenumber 分别表示文件名或文件号.
                 (2)关键字Binary 表示打开的是二进制文件               
                 (3)对于二进制文件,不能指定字节长度.每个打开的二进制文件都有一个自己的指针,文件指针是一个数字值,指向下一次读写操作的文件中的位置.二进制文件中的每个”位置”对应一个数据字节,因此,有n个字节的文件,就有1到n个位置.
                我们可以用Seek()函数返回当前的文件指针位置(即下一个要读写的字节);用Loc()函数返回上一次读写的字节位置,除非用Seek语句移动了指针,Loc()返回值总比Seek()的小1.我们来看下面的例子:
                Open “student.txt”  for Binary as #1
                该语句用二进制的方式打开了student.txt文件.
                
                (二)读文件
                1、顺序文件
                顺序文件的读取有三种方式:
                (1)Line Input # 语句
                该语句从打开的顺序文件中读取一行数据。这里的一行指的是从当前指针位置开始到回车符或回车换行符之间的所有数据。Line Input #
                语句的语法格式如下:
                Line Input # 文件号,变量号
                说明:“文件号”是打开文件时所用的文件号;“变量号”使用来存放读出数据的一个或多个变量,如果有多个变量,中间用空格分割开。Input#
                语句为参数列表中的每一个变量读取文件的一个域,并将读出的域存入变量中。该语句只能顺序的从第一个域开始,直到读取想要的域。
                请看下面代码:
                Dim strLine As String
                Open "c:/vb/test.txt" For Input As #1
                Do Until EOF(1)
                   Line Input #1, strLine
                   text1.Text = text1.Text + strLine + Chr(13) + Chr(10)
                Loop
                Close #1
                此段代码逐行读取一个文件到文本框中。
                (2)Input函数
                此函数可以从顺序文件中一次读取指定长度的字符串。具体地说,就是从文件的当前位置开始,读取指定个数的字符,然后将他们返回。Input函数可以读取包括换行符,回车符,空格符等在内的各种字符。下面是它的语法格式:
                变量 = Input(串长度,文件号)
                例如,要从一个打开文件中读取12个字符并复制到变量file中,我们可以这样写:
                file = Input(12,filenum)
                如果要将整个文件复制到变量,请使用InputB函数将字节从文件复制到变量。由于InputB函数返回一个ASCII字符串,因此,必须用StrCopy函数将ASCII字符串转换为Unicode字符串。代码如下:
                file = StrCopy (Input (LOF(filenanum),filenum),vbUnicode)
                (3)Input # 语句
                Input #语句可以从文件中同时向多个变量内读入数据,而且读入的数据可以是不同类型的。
                下面使它的语法格式:
                Input # 文件号,变量列表
                例如,我们要在文件student.txt中写入数据,下面是代码:

                Open "student.txt" For Output As #filenum
                Write #filenum, 
    "张三""初一年级"14
                Write #filenum, 
    "李四""职业高中"18
                 
                
    Dim name As String, nianji As String, age As Integer
                
    Dim name1 As String, nianji1 As String, age1 As Integer
                Open 
    "student.txt" For Input As #filenum
                Input #filenum, name, nianji, age
                Input #filenum, name1, nianji1, age1
                Close #filenum
                 
                执行结果:
                name
    =”张三” ,nianji = “初一年级” ,age =14   
                name
    =”李四” ,nianji = “职业高中” ,age =18  

            2、随机文件
                读取随机文件是可以使用Get # 语句,数据从文件的一个指定记录中读出后,存入一个用户自定义的变量中.
                语法格式: Get # FileNum ,[RecNum],UserType
                说明: (1)FileNum 是要打开的文件号;RecNum是要读取的记录号,若省略,则读取下一个记录
                (2)UserType 是一个用来存放读出数据的用户自定义的数据类型变量.
                下面是一个例子:
                Get # 1,5,Student 
                该语句读取文件号为1的文件中的第5条记录.
            3、二进制文件
                读写二进制文件的方法和读写随机文件的方法基本相同,下面是相关的语句格式及其说明:
                格式:  Get [#]fileNumber ,[Pos], Var
                功能: 用二进制方式,从文件的中指定的位置开始读取,所给变量长度的数据
                说明: (1)FileNumber是以二进制方式打开的文件号.
                (2)Pos用来指定读写操作发生时的字节位置,若省略,则使用当前文件指针位置.
                (3)Var是用来存放读出的数据的变量.该语句会自动根据var变量包含的字节长度读取适当的文件,如果Var是一个可变长度的字符串变量,则传送的字节数等于Var中目前的字节数.对于文件长度的判断我们可以使用Lof()函数,Eof()函数检查文件的结尾位置.
                下面的代码复制studert.txt文件到student1.txt文件中
                Dim ar As String * 1, i As Integer
                Open "c:/student.txt" For Binary As #1
                Open "c:/student2.txt" For Binary As #2
                For i = 1 To LOF(1)
                   Get #1, , ar
                   Put #2, , ar
                Next i
                Close #1, #2
                 
          (三)写文件
              1、  顺序文件
                 写顺序文件我们可以用Write # 和Print #语句向一个已经打开的文件中写入数据.
                下面是他们的格式和说明:
                  Print # 的语法格式:
                  Print # 文件号,变量列表
                例如,将文本框中的文本写到文件中,代码如下:
                Open "file.txt" For Output As #filenum
                Input #filenum, text1.text
                
                Write # 语句的语法格式:
                       Write # 文件号,变量列表
                说明:用Write # 语句写入的信息便于以后用Input #语句来读取数据,因为Write
                #语句自动将写入到文件中的信息用逗号分开,并为字符串数据加上双引号.例如:
                Open "student.txt" For Output As #filenum
                Write #filenum, "张三", "初一年级", 14
                Write #filenum, "李四", "职业高中", 18
                 
            2、  随机文件
                向随机文件中写入数据,使用Put #语句.语法格式如下:
                Put [#] FileNum ,[RecNum],UserType
                说明: (1) FileNum 是要打开的文件号;RecNum是要写入的记录号,若省略,则再上一次用Get
                和Put语句所读写过的记录的后一条记录中写入,如果没有执行过Get 和Put语句,就从第一条记录开始
                (2)UserType
                是包含要写入数据的用户自定义的数据类型变量.例如:我们向前面的student.txt文件中的第5个记录写入数据,可用这些语句:
                stud.No = 0301
                stud.Name = “王武”
                stud.Age =20
                Put #1 ,5,stud
                如果要插入的数据不只一两条的话,首先要确定文件和每条记录的长度,这样就可以计算出文件中究竟有多少条记录.我们可以用Lof()函数返回文件的长度,Len()函数返回每个记录的长度,计算文件中的记录个数可以用文件的长度除以给个记录的长度.示例如下:
                Nextrec= (Lof(1)/Len(UserType))+1
                Put #1,Nextrec,UserType
             3、二进制文件
                下面是以二进制方式写入文件的语句格式及其说明:
                格式:  Put [#]fileNumber ,[Pos], Var
                功能: 用二进制方式,从文件的中指定的位置开始写入,所给变量长度的数据
                说明: (1)FileNumber是以二进制方式打开的文件号.
                (2)Pos用来指定写操作发生时的字节位置,若省略,则使用当前文件指针位置.
                (3)Var是用来存放写入的数据的变量.该语句会自动根据var变量包含的字节长度写入文件,如果Var是一个可变长度的字符串变量,则传送的字节数等于Var中目前的字节数.
                使用方法可参考二进制文件的读操作.

          三、使用windows提供的API函数
             下面是windows中提供的对于文件进行操作的API函数及其功能:
                 CloseHandle关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的
                      CompareFileTime根据FILETIME结构的信息,对比两个文件的时间
                      CopyFile复制文件。与vb的filecopy命令相似
                      CreateFile这是一个全功能的例程,可打开和创建文件、管道、邮槽、通信服务、设备以及控制台
                      DeleteFile删除指定文件
                      FindClose关闭由FindFirstFile函数创建的一个搜索句柄
                      FindFirstFile根据文件名查找文件
                      FindNextFile根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
                      FlushFileBuffers针对指定的文件句柄,刷新内部文件缓冲区
                      GetBinaryType判断文件是否可以执行
                      GetFileAttributes判断指定文件的属性
                      GetFileInformationByHandle这个函数提供了获取文件信息的一种机制——在一个BY_HANDLE_FILE_INFORMATION结构中装载与文件有关的信息
                      GetFileSize判断文件长度
                      GetFileTime取得指定文件的时间信息
                      GetFileType在给出文件句柄的前提下,判断文件类型
                      GetFileVersionInfo从支持版本标记的一个模块里获取文件版本信息
                      GetFileVersionInfoSize针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区
                      GetShortPathName获取指定文件的短路径名
                      GetTempFileName这个函数包含了一个临时文件的名字,它可由应用程序使用
                      lclose关闭指定的文件,请参考CloseHandle函数,了解进一步的情况
                      lcreat创建一个文件。如文件已经存在,就会将其缩短成零长度,并将其打开,以便读写
                      llseek设置文件中进行读写的当前位置。该函数与vb的seek语句类似。如果用vb的open命令打开了一个文件,那么不要再对这个文件使用llseek函数
                      LockFile在windows中,文件可用共享模式打开——在这种情况下,多个进程可同时访问该文件。利用这个函数,要对文件进行读写的一个应用程序可将文件的某一部分锁定起来,使其不能由其他应用程序访问。这样便避免了同时读写时发生的冲突
                      LockFileEx与LockFile相似,只是它提供了更多的功能
                      lopen以二进制模式打开指定的文件
                      lread将文件中的数据读入内存缓冲区
                      lwrite将数据从内存缓冲区写入一个文件
                      MoveFile, MoveFileEx移动文件。如dwFlags设为零,则MoveFile完全等价于MoveFileEx
                      OpenFile这个函数能执行大量不同的文件操作。和这个函数相比,请优先考虑win32的CreateFile函数(它能打开命名管道和控制Unicode文件名,同时不受128个字符的路径名称的限制)
                      ReadFile从文件中读出数据。与lread函数相比,这个函数要明显灵活的多。该函数能够操作通信设备、管道、套接字以及邮槽
                      ReadFileEx与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调
                      SearchPath查找指定文件
                      SetEndOfFile针对一个打开的文件,将当前文件位置设为文件末尾
                      SetFileAttributes设置文件属性
                      SetFilePointer在一个文件中设置当前的读写位置
                      SetFileTime设置文件的创建、访问及上次修改时间
                      UnlockFile解除对一个文件的锁定
                      UnlockFileEx解除对一个文件的锁定
                      WriteFile将数据写入一个文件。该函数比lwrite函数要灵活的多。也可将这个函数应用于对通信设备、管道、套接字以及邮槽的处理
                      WriteFileEx与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调

                让我们通过几个例子来详细的了解一下其中主要的几个函数及其用法:
                1、CreateFile
                作用:这是一个全功能的例程,可打开和创建文件、管道、邮槽、通信服务、设备以及控制台
                声明形式:Declare Function CreateFile Lib "kernel32" Alias "CreateFileA"  (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As CURITY_ATTRIBUTES,
    ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As
                Long, ByVal hTemplateFile As Long) As Long
                说明:此函数的返回值类型为Long,如执行成功,则返回文件句柄。INVALID_HANDLE_VALUE表示出错,会设置GetLastError。即使函数成功,但若文件存在,且指定了CREATE_ALWAYS
                或 OPEN_ALWAYS,GetLastError也会设为ERROR_ALREADY_EXISTS
                打开一个通信端口时(如COM1),无论如何都要设置成 OPEN_EXISTING
                这个函数代替了lOpen 和 lCreate函数,应该是我们的首选
                参数说明:
                      参数类型及说明
                      lpFileNameString,要打开的文件的名字
                      dwDesiredAccessLong,如果为 GENERIC_READ 表示允许对设备进行读访问;如果为
                      GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息
                      dwShareModeLong,零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE
                      表示允许对文件进行共享访问
                      lpSecurityAttributesSECURITY_ATTRIBUTES,指向一个SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性(如果操作系统支持的话)
                      dwCreationDispositionLong,下述常数之一:
                      CREATE_NEW创建文件;如文件存在则会出错
                      CREATE_ALWAYS创建文件,会改写前一个文件
                      OPEN_EXISTING文件必须已经存在。由设备提出要求
                      OPEN_ALWAYS如文件不存在则创建它
                      TRUNCATE_EXISTING讲现有文件缩短为零长度
                      dwFlagsAndAttributesLong,一个或多个下述常数
                      FILE_ATTRIBUTE_ARCHIVE标记归档属性
                      FILE_ATTRIBUTE_COMPRESSED将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式
                      FILE_ATTRIBUTE_NORMAL默认属性
                      FILE_ATTRIBUTE_HIDDEN隐藏文件或目录
                      FILE_ATTRIBUTE_READONLY文件为只读
                      FILE_ATTRIBUTE_SYSTEM文件为系统文件
                      FILE_FLAG_WRITE_THROUGH操作系统不得推迟对文件的写操作
                      FILE_FLAG_OVERLAPPED允许对文件进行重叠操作
                      FILE_FLAG_NO_BUFFERING禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块
                      FILE_FLAG_RANDOM_ACCESS针对随机访问对文件缓冲进行优化
                      FILE_FLAG_SEQUENTIAL_SCAN针对连续访问对文件缓冲进行优化
                      FILE_FLAG_DELETE_ON_CLOSE关闭了上一次打开的句柄后,将文件删除。特别适合临时文件
                      也可在Windows NT下组合使用下述常数标记:
                      SECURITY_ANONYMOUS, SECURITY_IDENTIFICATION,
                      SECURITY_IMPERSONATION, SECURITY_DELEGATION,
                      SECURITY_CONTEXT_TRACKING, SECURITY_EFFECTIVE_ONLY
                      hTemplateFileLong,如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性

                示例如下:
                long hfile= CreateFile(“c://test.txt”,GENERIC_READ,
                FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,
                OPEN_EXISTING,FILE_ELAG_OVERLAPPED,NULL)
                2、lcreat
                作用:创建一个文件。如文件已经存在,就会将其缩短成零长度,并将其打开,以便读写
                声明形式:Declare Function lcreat Lib "kernel32" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Long) As Long
                说明:此函数的返回值类型为Long,如执行成功,返回打开文件的句柄。如果出错,则返回HFILE_ERROR
                该函数会打开已由其他应用程序打开的文件,所以使用它时要小心。win32的CreateFile函数已取代了这个函数。这个函数与vb的open语句作用相同
                参数说明:
                      参数类型及说明
                      lpPathNameString,欲创建的文件的名字
                      iAttributeLong,下述值之一
                      0——文件能够读写
                      1——创建只读文件
                      2——创建隐藏文件
                      3——创建系统文件

                例如下面的语句打开c:/test.txt文件
                lcreat “c:/test.txt”,0
                3、lopen
                作用:以二进制模式打开指定的文件
                声明形式:Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
                说明:此函数的返回值类型为Long,如执行成功,返回打开文件的句柄。HFILE_ERROR表示出错。会设置GetLastError
                CreateFile函数在win32下提供了更多的功能
                参数说明:
                      参数类型及说明
                      lpPathNameString,欲打开文件的名字
                      iReadWriteLong,访问模式和共享模式常数的一个组合,如下所示:
                      1、访问模式
                      READ打开文件,读取其中的内容
                      READ_WRITE打开文件,对其进行读写
                      WRITE打开文件,在其中写入内容
                      2、共享模式(参考OpenFile函数的标志常数表)
                      OF_SHARE_COMPAT, OF_SHARE_DENY_NONE, OF_SHARE_DENY_READ,
                      OF_SHARE_DENY_WRITE, OF_SHARE_EXCLUSIVE

                4、GetFileTime
                作用:取得指定文件的时间信息
                声明形式:Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
                说明:Long,非零表示成功,零表示失败。会设置GetLastError
                如果不需要特定的信息,那么lpCreationTime,lpLastAccessTime,lpLastWriteTime都可以设置为零(用ByVal As Long)。这个函数返回的文件时间采用UTC格式
                参数说明:
                      参数类型及说明
                      hFileLong,文件的句柄
                      lpCreationTimeFILETIME,用于装载文件的创建时间
                      lpLastAccessTimeFILETIME,用于装载文件上一次访问的时间(FAT文件系统不支持这一特性)
                      lpLastWriteTimeFILETIME,用于装载文件上一次修改的时间

                示例代码如下:

    ‘函数声明
                
    Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FileTime, lpLastAccessTime As FileTime, lpLastWriteTime As FileTime) As Long
                
    Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As LongAs Long
    ‘定义变量
                
    Dim file As Long
                
    Dim CreationTime As FileTime
                
    Dim lastaccesstime As FileTime
                
    Dim lastaccesstime As FileTime
    ‘定义结构
                
    Private Type FileTime
                    dwLowDateTime 
    As Long
                    dwHighDateTime 
    As Long
                
    End Type
    Private Sub Form_Load()
                str1 
    = "c: ext.txt"
                file 
    = lopen(str1, READ_WRITE) ‘打开文件
                temp 
    = GetFileTime(file, CreationTime, lastaccesstime, 
                lastwritetime)’得到文件相关信息
                
    MsgBox CreationTime  ‘显示信息
    End Sub

                以上代码显示文件的创建时间
                5、CopyFile
                作用:复制文件。与vb的filecopy命令相似
                声明形式:Declare Function CopyFile Lib "kernel32" Alias "CopyFileA"  (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
                说明:Long,非零表示成功,零表示失败。会设置GetLastError
                参数说明:
                      参数类型及说明
                      lpExistingFileNameString,源文件名
                      lpNewFileNameString,目标文件名
                      bFailIfExistsLong,如果设为TRUE(非零),那么一旦目标文件已经存在,则函数调用会失败。否则目标文件被改写

                示例代码如下:

    ‘函数声明
                
    Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As LongAs Long

    Private Sub Form_Load()
                CopyFile 
    "c: est1.txt""c: est2.txt"1
    End Sub

               以上代码将c:/test1.txt 拷贝到c:/test2.txt
                6、MoveFile, MoveFileEx
                作用:移动文件。如dwFlags设为零,则MoveFile完全等价于MoveFileEx
                声明形式:Declare Function MoveFile& Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String)
                Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long)
                说明:Long,非零表示成功,零表示失败。会设置GetLastError
                这两个函数通常不能将文件从一个卷移动到另一个卷。但如设置了MOVEFILE_COPY_ALLOWED标记,MoveFileEx可以做到这一点.
                参数说明:
                      参数类型及说明
                      lpExistingFileNameString,欲移动的文件名
                      lpNewFileNameString,新文件名
                      dwFlagsLong,一个或多个下述常数
                      MOVEFILE_REPLACE_EXISTING如目标文件存在,则将其替换
                      MOVEFILE_COPY_ALLOWED如移动到一个不同的卷,则复制文件并删除原来的文件
                      MOVEFILE_DELAY_UNTIL_REBOOT移动操作在系统下次重新启动时正式进行。这样便可在Windows
                      NT中改换系统文件

                示例代码如下:

    ‘定义结构
                
    Private Const MOVEFILE_COPY_ALLOWED = &H2
                
    Private Const MOVEFILE_DELAY_UNTIL_REBOOT = &H4
                
    Private Const MOVEFILE_REPLACE_EXISTING = &H1
     ‘函数声明
                
    Private Declare Function MoveFile& Lib "kernel32" Alias "MoveFileA"  (ByVal lpExistingFileName As String, ByVal lpNewFileName As String)
                
    Private Declare Function MoveFileEx& Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal             lpNewFileName As String, ByVal dwFlags As Long)
                
    Private Sub Form_Load()
                MoveFile 
    "c: est.txt""d: est1.txt" ‘移动文件
                MoveFileEx 
    "d: est1.txt""c: est.txt", MOVEFILE_REPLACE_EXISTING  
                ‘再一次移动
    End Sub

                以上代码实现了文件的移动,两次移动後,文件不变
                7、DeleteFile
                作用:删除指定文件
                声明形式:Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA"  (ByVal lpFileName As String) As Long
                说明:Long,非零表示成功,零表示失败。会设置GetLastError
                与vb的kill语句相似,在windows 95下使用这个函数要小心——即使文件当前正由一个应用程序打开,该函数也会将其删除.
                参数说明:
                      参数类型及说明
                      lpFileNameString,欲删除文件的名字

                示例代码如下:

    ‘函数声明
                
    Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As StringAs Long
                
    Private Sub Form_Load()
                DeleteFile 
    "c: est.txt"
    End Sub

    以上代码删除了c:/test.txt文件
                    
               

    展开全文
  • vb中文件的打开、文件的关闭

    千次阅读 2014-10-13 10:00:09
    数据文件的操作按以下步骤进行:...Open 文件名 For 方式 [Access 存取类型] [lock] As [#]文件号 [Len=记录长度] 文件名:数据文件的名字,该文件名可能还包括目录、文件夹及驱动器。 方式:指定文件方式,有 Ap

    数据文件的操作按以下步骤进行:

    打开数据文件(首次操作为建立数据文件并且打开)

    进行读写操作

    关闭数据文件

     

    1、文件的打开

    格式:

    Open 文件名 For 方式 [Access 存取类型] [lock] As [#]文件号 [Len=记录长度]

    文件名:数据文件的名字,该文件名可能还包括目录、文件夹及驱动器。

    方式:指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。

    Append:顺序输出(写入数据文件)

    Binary:二进制方式(读写)

    Input:顺序输入(读出数据)

    Output:顺序输出(写入数据文件)

    Random:随机(读写)

    存取类型:说明打开的文件可以进行的操作,有 Read(读)、Write(写)、或 Read Write(读写) 操作。

    Read(读):只读文件

    Write(写):只写文件

    Read Write(读写):读写文件,在随机文件和二进制文件和Append方式下有效。

    Lock:说明限定于其它进程打开的文件的操作。有 Shared、Lock Read、Lock Write、和 Lock Read Write 操作。

    Lodk Shared:所有进程都可以对此数据文件进行读写操作。

    Lock Read:不允许其他进程进行读操作。

    Lock Write:不允许其他进程进行写操作。

    Lock Read Write:不允许其他进程进行读写操作。

    文件号:一个有效的文件号,范围在 1 到 511 之间。

    记录长度:对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。

    功能:

    打开指定的文件。

    如果指定的文件不存在,在用 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。

    如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open 操作失败,而且会有错误发生。

    如果方式是 Binary 方式,则 Len 子句会被忽略掉。

    注意:在 Binary、Input 和 Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append 和 Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。

    举例:

    Open "d:\student.txt" For Output As #1

    Open "d:\txl.txt" For Append   As #2

    Open "d:\address.txt" For Input Read  As #3

    Open "d:\cj.txt" For Random  As #4 len=40

     

    2、文件关闭

    格式:

    Close [[#]文件号][,[#]文件号][,[#]文件号][,[#]文件号]......

    文件号:打开文件时指定的文件号。

    功能:

    关闭指定的文件号连接的文件。如果不指定文件号将关闭所有打开的数据文件。

    关闭的操作主要是将缓冲区中的数据写入文件中,并且取消文件号与文件的关联。

    除了Close外,当程序运行结束时,也会关闭所有的数据文件。

    举例:

    Close #1

    Close #2,#3

     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/qinson/archive/2004/10/09/128860.aspx

    展开全文
  • 不少网友问及如何在VB中建立和使用文本资源文件。我想这也是很多VB初学者迫切想掌握的技巧。为此,将回答网友的信件整理了一下,形成此文,希望对大家有些帮助。 一.文本资源文件的建立第一步:启动资源编辑器如果VB...
     不少网友问及如何在VB中建立和使用文本资源文件。我想这也是很多VB初学者迫切想掌握的技巧。为此,将回答网友的信件整理了一下,形成此文,希望对大家有些帮助。 
    

    一.文本资源文件的建立

    第一步:启动资源编辑器

    如果VB资源编辑器没有被加载,请单击"外接程序",选取"外接管理器"启动外接管理器,然后选中"VB6 资源编辑器",在左下方的"加载行为"中的"加载/卸载"前打钩,点击"确定"退出外接管理器。此时,可以在工具条中看到资源编辑器的绿色图标,单击它就可以启动VB资源编辑器了。

    第二步:

    在VB资源编辑器窗口的工具栏中央,有一个有"abc"字样的图标,点击它,弹出编辑字符串表,进入字符串编辑状态。在这里的编辑状态有点特殊,没有见到常见的文本编辑器所见到的输入光标,不过已经可以输入了,输完一行按回车,进入下一行的编辑,其中标识符是程序自动给出的。编辑完毕请单击窗体右上角的关闭按钮,这时可以看到VB资源编辑器目录树里多出了"abc字符串表格"字样,它就是刚才输入的东东了,如果需要修改双击它就行。
    保存资源文件,退出资源编辑器。资源文件已经自动添加在"相关文档"里,当前的工程可以使用它了。

    (技巧:任何时候都可以对已经建立的资源文件进行修改。方法是在"相关文档"中双击以.res为后缀名的资源文件。)

    二.资源文件的使用

    VB提供了若干条读取资源文件的函数,这里针对本文主题只说明一下其中的一条:LoadResString(index)。这条函数很简单,使用时只需填写正确的索引号即可读出文本资源文件中的内容,比如:MyStr=LoadResString(101),此句读出的是资源文件中的第一条文本内容。关于资源文件中的索引号,总是从101开始的,这一点一定要注意。

    下面我们从刚才建立的资源文件中读取所有的文本条目并将文本输出在窗体上:

    Dim Tmpstr As String, i As Integer
    For i = 101 To 104 &apos;假设有五条记录
    Tmpstr = LoadResString(i)
    Print Tmpstr
    Next 

    这仅仅是一个例子,你可以根据自己的需要灵活地对文本资源文件进行操作,——倘若如此,本文的目的就达到了!


    一、如何制作资源文件

      VB所支持的资源文件必须以.res为扩展名,否则VB将无法正确识别。只要在项目文件中加入.res文件,就可以在程序中调用.res文件中的资源了。在生成EXE文件时,.res文件所包含的资源也会自动包含于其中。

      制作.res文件,一种方法是使用VC++、Delphi等软件的资源编辑工具,它们可以直接编辑.res文件。不使用C++或其它工具的VB用户也可以采用另一种办法:先建立脚本文件.rc,然后用rc.exe编译成.res。VB 5.0以上的用户可以在Wizard子目录中找到rc.exe(如果使用VB4,可以在VB4的光盘上找到这个工具)。对于新手来说,手工建立.rc文件可能有些麻烦,可以考虑使用ResEdit。ResEdit这个资源编辑器并不包括在VB中,而应该从微软的站点上下载,地址是:http://premium.microsoft.com/vbasic/updates/ResEdit.asp。请注意,如果你以前没有访问过http://premium.microsoft.com/vbasic/,你需要先免费注册,注册过程中要输入VB的序列号(就是VB的About对话框中显示的那个序列号)。下载后,安装这个工具,你就可以在“外接程序管理器”找到它了。这个工具功能不是很强,但比手工编辑.rc文件简单多了。

      二、在VB中调用资源
      VB为支持.res资源增加了三个函数:LoadResPicture()、LoadResString()和LoadResData()。

      LoadResPicture()函数用于调入位图、图标和光标资源,其作用非常类似LoadPicture()函数,不过LoadPicture是从磁盘文件中读取图形。LoadResPicture的格式为:
      LoadResPicture(资源ID号,资源类型)

      资源类型可为vbResBitmap、vbResIcon、vbResCursor,分别对应着位图、图标和光标三种资源。得到的图形可以直接赋与Picture属性,或在使用PaintPicture方法时使用。

    LoadResString()函数用于调入字符串资源。字符串资源对于开发多语种软件比较有用。其使用格式为:

    LoadResString(资源ID号)
    LoadResData()函数可以调入各种资源。使用格式为:
    LoadResData(资源ID号,资源类型)

    这里资源类型取值的含义如下表所示:

    1 光标 2 位图 3 图标 4 菜单 5 对话框 6 字符串 7 字体目录 8 字体 9 加速键 10 用户定义资源 12 设备无关光标 14 设备无关图标

      该函数以Byte数组形式返回指定资源。VB以设计窗体快捷为其特色,故一般很少使用菜单、对话框和加速键资源。在VB中一般不使用资源文件的办法来设置EXE文件的版本信息,而应该在项目选项对话框中设置版本信息。LoadResData()函数最主要是用于用户定义资源。用户定义资源可以是GIF文件、文本文件或其他有用的数据,其使用起来相当灵活,在后面 “如何显示资源中的GIF文件”部分我们将展示这一点。

      下面,我们先给出一个完整的示例来展现如何进行资源文件的编程。
      首先,建立如下资源描述文件(*.rc),然后编译成RES文件,并加入项目文件。该资源文件中包括八个图标。

      201 ICON "MOON01.ICO"   202 ICON "MOON02.ICO"   203 ICON "MOON03.ICO"   204 ICON "MOON04.ICO"   205 ICON "MOON05.ICO"   206 ICON "MOON06.ICO"   207 ICON "MOON07.ICO"   208 ICON "MOON08.ICO"

      然后在窗体上加上一个Timer和Image,设置Timer的Enable属性为True,Interval属性为1000。在代码输入窗口加入如下的程序:

    Option Explicit Dim Which As Integer '动画显示的图标号 Private Sub Form_Load() Which = 201 End Sub Private Sub Timer1_Timer() Image1.Picture = LoadResPicture(Which, vbResIcon) If Which = 208 Then Which = 201 '循环显示 Else Which = Which + 1 End If End Sub End Sub

    该示例运行时连续显示图标资源以实现动画效果。

    展开全文
  • VB中文件操作文档

    千次阅读 2007-02-02 15:07:00
    7.1 文件系统控件1. 文件系统控件种类 (1) 驱动器列表框(DriveListBox):用来显示当前机器上的所有盘符 (2) 目录列表框(DirListBox):用来显示当前盘上的所有文件夹 (3) 文件列表框(FileListBox):...

    7.1    文件系统控件

    1. 文件系统控件种类

     (1 驱动器列表框DriveListBox):用来显示当前机器上的所有盘符
     

     (
    2
    目录列表框DirListBox):用来显示当前盘上的所有文件夹

     
    3 文件列表框FileListBox):用来显示当前文件夹下的所有文件名

    2. 重要属性

    属性

    适用的控件

    作用

    示例

    Drive

    驱动器列表框

    包含当前选定的驱动器名

    Driver1. Drive="C"

    Path

    目录和文件列表框

    包含当前路径

    Dir1.Path="C:/WINDOWS"

    FileName

    文件列表框

    包含选定的文件名

    MsgBox File1.FileName

    Pattern

    文件列表框

    决定显示的文件类型

    File1.Pattern="*.BMP"

    3. 重要事件

    事件

    适用的控件

    事件发生的时机

    Change

    目录和驱动器列表框

    驱动器列表框的Change事件是在选择一个新的驱动器或通过代码改变Drive属性的设置时发生

    目录列表框的Change事件是在双击一个新的目录或通过代码改变Path属性的设置时发生

    PathChange

    文件列表框

    当文件列表框的Path属性改变时发生

    PattenChange

    文件列表框

    当文件列表框的Pattern属性改变时发生

    Click

    目录和文件列表框

    用鼠标单击时发生

    DblClick

    文件列表框

    用鼠标双击时发生

    7.2     文件的读写

    1.  文件的有关概念

     记录:计算机处理数据的基本单位,由若干个相互关联的数据项组成。相当于表格中的一行。

     
    文件:记录的集合,相当于一张表。

     
    文件类型:顺序文件、随机文件、二进制文件。

     
    访问模式:计算机访问文件的方式,VB中有顺序、随机、二进制三种访问模式。

    2. 顺序访问模式

        顺序访问模式的规则最简单,指读出或写入时,从第一条记录“顺序”地读到最后一条记录,不可以跳跃式访问。该模式专门用于处理文本文件,每一行文本相当于一条记录,每条记录可长可短,记录与记录之间用“换行符”来分隔。

      顺序文件的写入步骤打开、写入、关闭  读出步骤打开、读出、关闭

    (1)打开文件

      打开文件的命令是Open,格式为:

      
           Open “文件名” For 模式  As [#] 文件号 [Len=记录长度]

     
    说明

       1
    )文件名可以是字符串常量也可以是字符串变量

       2)模式可以是下面之一:

     
         OutPut:打开一个文件,将对该文件进行写操作

      
        Input:打开一个文件,将对该文件进行读操作

      
        Append:打开一个文件,将在该文件末尾追加记录

       
    3 文件号是一个介于1-511之间的整数,打开一个文件时需要指定一个文件号,这个文件号就代表该文件,直到文件关闭后这个号才可以被其他文件所使用。可以利用FreeFile()函数获得下一个可以利用的文件号。

           例: Open  "D:/sj/aaa"  For  Output  As  #1   

       
    意思是:打开D:/SJaaa文件供写入数据,文件号为#1

    (2)写操作

       将数据写入磁盘文件所用的命令是:Write# 或Print#。语法格式:

      1) Print #文件号,[输出列表]
        
         例:
    Open D:/SJ/TEST.DAT For  Output  As  #1

          
     Print  #1,Text1.Text        '
    把文本框的内容一次性写入文件

           Close  #1

      2Write #文件号,[输出列表]

            其中的输出列表一般指用逗号,分隔的数值或字符串表达式。Write #Print #的功能基本相同,区别是Write #是以紧凑格式存放,在数据间插入逗号,并给字符串加上双引号。

    (3)  关闭文件

       结束各种读写操作后,必须将文件关闭,否则会造成数据丢失。关闭文件的命令是Close

      
    Close  [#]文件号[[#]文件号]……

      
    例: Close  #1#2#3

    (4) 读操作

      1) Input #文件号,变量列表

        作用:将从文件中读出的数据分别赋给指定的变量。

       
    注意:与Write #配套才可以准确地读出。

      2)Line  Input #文件号,字符串变量

        用于从文件中读出一行数据,并将读出的数据赋给指定的字符串变量,读出的数据中不包含回车符和换行符,可与Print #配套用。

      3)Input$(读取的字符数,#文件号)

        该函数可以读取指定数目的字符。

        
    与读文件有关的两个函数:

        
    LOF():返回某文件的字节数

        
    EOF():检查指针是否到达文件尾。

        
    例:将一个文本文件读入文本框的三种方法。

    3.随机访问模式

         该模式要求文件中的每条记录的长度都是相同的,记录与记录之间不需要特殊的分隔符号。只要给出记录号,可以直接访问某一特定记录,其优点是存取速度快,更新容易。

     (1)  打开与关闭

        
    打开Open “文件名” For  Random  As [#] 文件号 [Len=记录长度]

        
    关闭Close  #文件号

           注意:文件以随机方式打开后,可以同时进行写入和读出操作,但需要指明记录的长度,系统默认长度为128个字节。

     (2)读与写

       
    读操作Get  [#]文件号,[记录号],变量名

        说明:Get命令是从磁盘文件中将一条由记录号指定的记录内容读入记录变量中;记录号是大于1的整数,表示对第几条记录进行操作,如果忽略不写,则表示当前记录的下一条记录。

           写操作Put  [#]文件号,[记录号],变量名

         说明:Put命令是将一个记录变量的内容,写入所打开的磁盘文件指定的记录位置;记录号是大于1的整数,表示写入的是第几条记录,如果忽略不写,则表示在当前记录后插入一条记录。

    4.  二进制访问模式

      打开Open “文件名” For  Binary  As [#] 文件号 [Len=记录长度]

         关闭Close  #文件号

         该模式是最原始的文件类型,直接把二进制码存放在文件中,没有什么格式,以字节数来定位数据,允许程序按所需的任何方式组织和访问数据,也允许对文件中各字节数据进行存取和访问。

        该模式与随机模式类似,其读写语句也是Get Put,区别是二进制模式的访问单位是字节,随机模式的访问单位是记录。在此模式中,可以把文件指针移到文件的任何地方,刚开始打开时,文件指针指向第一个字节,以后随文件处理命令的执行而一旦。文件一旦打开,就可以同时进行读写。 

     

    7.3     常用的文件操作语句和函数

    1.   FileCopy语句

      格式FileCopy   源文件名  目标文件名

      
    功能:复制一个文件

      
    说明:不能复制一个已打开的文件

    2.   Kill语句

      格式:Kill  文件名

      
    功能:删除文件

      
    说明:文件名中可以使用通配符 *,?

    3.  Name语句

      格式:Name  旧文件名  新文件名

     
     功能:重新命名一个文件或目录

     
     说明:不能使用通配符;具有移动文件功能;不能对已打开的文件进行重命名操作

    4. ChDrive语句

      格式:ChDrive  驱动器

     
     功能: 改变当前驱动器

     
    说明:如果驱动器为空,则不变;如果驱动器中有多个字符,则只会使用首字母

    5.MkDir语句

      格式:MkDir  文件夹名

     
     功能:创建一个新的目录

    6.ChDir语句

      格式:ChDir  文件夹名

     
     功能:改变当前目录

     
     说明:改变默认目录,但不改变默认驱动器。

    7. RmDir语句

      格式:RmDir  文件夹名

     
    功能:删除一个存在的目录

     
    说明:不能删除一个含有文件的目录

    8. CurDir()函数

      格式: CurDir[(驱动器)]

     
    功能:可以确定任何一个驱动器的当前目录。

     
    说明:括号中的驱动器表示需要确定当前目录的驱动器,如果为空,返回当前驱动器的当前目录路径。

    展开全文
  • VB读写文件

    千次阅读 2008-03-19 09:50:00
    VB读写文件要用到以下语句: 1、Open语句打开文件。 2、读文件使用Line Input、Input #,(以上为文本方式)和Get(以上为二进制方式)。 3、写文件使用Print #、Write(以上为文本方式)和Put(以上为二进制方式)...
  • VB中资源文件的具体使用方法

    千次阅读 2005-04-21 09:27:00
    下面就和大家具体谈谈如何在VB中建立和使用资源文件。 首先,我们先了解一下windows应用程序一般经常使用的资源: 位图:位图是用于创建应用程序用户界面的图像。例如,用户可以为工具栏按钮创建一套位图,也可以...
  • [VB6]支持UTF文本文件访问的模块

    万次阅读 2006-05-30 08:43:00
    支持UTF文本文件访问的模块支持常见的ANSI、UTF-8、UTF-16LE、UTF-16BE这几编码文本是为了解决这个帖子:http://community.csdn.net/Expert/topic/4527/4527535.xml使用Open XXX For Input As #1打开一文本文件时...
  • VB打开Excel文件

    万次阅读 2014-03-05 17:12:41
    (1)vb打开Excel    用EXCEL对象读取EXCEL... 做为一简捷、系统的 Windows应用程序开发工具,VB具有强大的数据处理功能,提供了多种数据访问方法,可以方便地存取Microsoft SQL Server、Oracle、XBase等多种
  • VB6的文件操作

    千次阅读 2007-09-28 12:12:00
    看到BEN同志对于VB6文件操作的总结,觉得挺好,特收藏,以备日后需要是...2、随机访问文件:这种文件格式很有特点:文件中存放若干条等长的单元(也可以说是记录);每个单元包含同类型、等数量、等长度的数据项;文
  • vb 读取文件属性

    千次阅读 2011-02-28 16:11:00
    如果只是查看大小、修改时间的话,可以直接使用VB内建函数: 返回文件修改时间:FileDateTime(文件路径) 返回文件字节大小:FileLen(文件路径) 示例: Private Sub Form_Load() Dim sOut As String Const ...
  • 如何通过类型库使 C DLL 更易于通过 VB 进行访问察看本文应用于的产品function loadTOCNode(){} 文章编号 : 189133 最后修改 :
  • Visual Basic.Net三种访问文件系统的方法:第一是使用 Visual Basic 运行时函数进行文件访问VB传统方式直接文件访问);第二是通过.Net的System.IO模型访问;第三种是通过文件系统对象模型FSO访问。...
  • VB远程数据库访问方法

    千次阅读 2008-11-02 01:10:00
    VB远程数据库访问方法阚志刚 马瑞民 袁文翠 摘 要 本文介绍了VB提供的四种访问远程数据库的方法:数据访问对象、远程数据访问对象、开放式数据库互连API函数和VBSQL API函数,并给出了每方法的优缺点。...
  • VB--FSO对象模型在VB中的应用

    千次阅读 2007-04-19 08:50:00
    FSO对象模型在VB中的应用 从 Visual Basic 的第一版至今,VB中有关文件的处理都是通过使用 Open 、Write以及其它一些相关的语句和函数来实现的。随着软件技术的不断发展,加上面向对象编程概念的日臻成熟,这些文件...
  • VB - 数据文件(一)顺序文件

    万次阅读 2011-11-03 22:36:24
    1. 打开文件(Open) Open 文件名 [For模式][Access 存取类型][锁定]As [#]...(2) 模式用于指定文件访问的方式,包括:  Append——从文件末尾添加 Binary——二进制文件  Input——顺序输入(输入给自己,从t
  • VB访问Oracle数据库技术的比较

    千次阅读 2007-04-11 10:52:00
    这 篇文章里介绍一些访问Oracle数据库的常见方法,对每方法进行简单的概述,并就每方法的技术和特点进行比较,希望能给广大读者提供一些借鉴。 一、数据访问对象(DAO) 数据访问对象很长一段时间内是Visual...
  • 随机文件  随机文件中每一个记录定长,并设置记录号... 建立一个随机文件文件中包含10个记录,每个记录由一个数(1至10)的平方、立方和开方根个数值组成,以该数作为记录号 Private Type Numval Square As
  • 层架构实例 VB.NET版

    千次阅读 热门讨论 2013-02-02 17:09:43
    层实例 首先发现感慨,对于三成这块,用到都是一些面向对象的特征,尤其是对象的实例化。如果你不是很注意的话,那么,你就会一头雾水,就像我一样,慢慢的雾里看花,最后... erVB.Net是后声明,是类名称或类型在
  • VB与数据库的几交互

    千次阅读 2013-06-14 10:10:00
    此我们可以看到,有三种方式可以实现VB与数据库的连接。  1.data link文件连接:数据连接文件。 UDL文件存储数据库连接的方式和使用“ODBC”数据源名称(DSN)非常相似。UDL文件存储OLE DB连接信息,例如提供程序...
  • 在VB 调用动态连接库

    千次阅读 2010-03-05 18:37:00
    在VB 调用动态连接库 2001-11-08· · ··yesky1 2 3 4 5 6 7 8 下一页 作为一简单易用的Windows开发环境,Visual Basic从一推出就受到了广大编程人员的欢迎。它使 程序员不必再直接面对纷繁复杂的Windows...
  • VB 读取文件 VB6.0 实用FSO

    千次阅读 2015-04-24 19:19:51
     由于FSO对象包含Scripting 类型库 (Scrrun.Dll),所以使用前首先需要在在工程引用这个文件,单击“工程”,“引用”,然后“引用”对话框选中“Microsoft Scripting Runtime”前的复选框,然后单击...
  • [VB学习]之六:文件操作

    千次阅读 2004-12-27 22:06:00
    文件的打开与读写Open “文件名” For 模式 As [#] 文件号 [Len=记录长度]模式:(1)顺序访问模式OutPut:打开一个文件,将对该文件进行写操作。Input:打开一个文件,将对该文件进行读操作。Append:打开一个文件...
  • 本文将向大家介绍在VB6.0实现弹出式菜单的几方法。 利用VB6.0内置的PopupMenu方法 PopupMenu方法(Method)是VB6.0内置的实现弹出式菜单的方法,用于MDIForm或Form等对象的鼠标点位置或指定位置显示弹出式...
  • VB中利用OpenGL绘制维地质构造图

    千次阅读 2007-02-23 10:13:00
    VB中利用OpenGL绘制维地质构造图2006年11月09日 星期四 07:53 P.M. (一) 摘要 OpenGL是一种三维图形开发标准,是从事维图形开发工作的必要工具,其稳定性、可靠性、可扩展性等特点,赋予了其强大的生命力和...
  • VB.net读写二进制文件

    千次阅读 2013-07-11 17:24:12
     如何创建日志文件标题下面有一个类似的主题。读写二进制信息使您可以创建和使用通过其他输入和输出方法无法访问文件。本示例还展示写入非字符串数据,并展示二进制 I/O 的功能。    尽管计算机上的文件...
  • 在VB中如何调用压缩工具winrar

    千次阅读 2007-09-12 20:21:00
    本人用VB写了一个自动备份工具,现在想备份之后自动调用winrar进行压缩,即目标文件夹看到的是压缩过的文件.本人不知如何调用winrar,向大家请教如何才能实现.最好有VB语句.谢谢!!! 答案1给Access数据库压缩 给你一...
  • 在VB 调用动态连接库

    千次阅读 2004-08-06 18:52:00
    (出处?好像是天极网)作为一简单易用的Windows开发环境,Visual Basic从一推出...VB中高度的封装和模块化减轻了编程者的负担,同时也使开发人员失去了许多访问低层API函数和直接与Windows交互的机会。因此,相比而言,
  • 利用VB.NET访问注册表

    千次阅读 2004-03-15 09:16:00
    利用VB.NET访问注册表 译者注:访问注册表的例子比较多,然而通过VB.NET访问注册表的例子并不多,本文翻译了一篇MSDN上的利用VB.NET存取注册表的例子,挺详细也挺全面的。 ( ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,922
精华内容 13,168
关键字:

在vb中三种文件访问的类型是