VB中filesystemobject对象实现文件存取方法

最简单的方法是使用filesystemobject对象。而它并非VB内置对象,

需引用才可以使用。

1.filesystemObject对象引用
“工程/引用/microsoft scription Runtime”
 在对象浏览器窗口中选“scripting”模块,看到增了许多对象,
drive filesystemobject    textstream    file等

其中filesystemobject是这些对象的关键,想要使用其它对象,

都必须先建立filesystemobject对象。

2.文件存取
 dim fs  as  new  filesystemobject  建立filesystemobject对象
 dim  txtf  as  textstream          定义了一个textstream对象变量

textstrem对象与文件的读写所有文件都必须先打开,才能读写,

filesystemobjet对象所提供的打开文件的方法有两种:

opentextfile  打开文件
createtextfile  建立文件

 通过filesystemobject所打开的文件是一个TextStream对象,
而通过textstream对象的各种方法和属性,就可以进一步读写文件。

 1)opentextfile  方法:打开文件

set  textstream对象名=filesystemobject名.opentextfile(文件名,IO模式,是否自动建立文件)
文件名:建议写入完整路径的文件名。
IO模式:可设置成forreading(=1)、forwrting(=2)或forappending(=8)。       
如果设置成forreading,则打开的文件是只读的;
如果设置成forwriting,则打开的文件是可写的,而原来文件                     的内容会被清除;
如果设置成forappending,则打开的文件是可写的,但原文件             的内容不会被清除,数据会从文件             的最后面开始写入。
参数缺省:   表示forreading 只读。
是否自动建立文件:可设置成true或false。
设置为:true     则当文件不存在时,会自动                                                       建立一个新文件。
设置为:false  则当文件不存在时,就会产生错误。
缺省时:表示为false。

 例:将c:/autoexec.bat打开成为只读文件
  dim  fs  as  new  filesystemobject
  dim  txtf  as  textstream
  set   txtf=fs.opentextfile(“c:/autoexec.bat”)

 例:将c:/text.txt打开成“从文件最后面写入的文件”
   dim  fs  as  new  filesystemobject
   dim  txtf  as  textstream
   set txtf=fs.opentextfile(“c:/test.txt”,forappending,true)
   txtf.close

2)createtextfile 方法:建立文件

set  textstream对象名=filesystemobject名.createtextfile(文件名称,是   否覆盖原文件)
文件名称:建议写入完整路径的文件名。
是否覆盖原文件:可设置成true或false。可缺省,缺省时是true,覆盖原文件
如果设置成true,则当文件存在的时候,原文将会被破坏,而以新文件所替代。
如果设置成false,则当文件存在时,将会产生错误

 例:建立一个c:/text.txt,若c:/test.txt存在,则覆盖它。
  dim  fs  as  new  filesystemobject
  dim  txtf  as  textstream
  set  txtf=fs.createtextfile(“c:/text.txt”)

 3)fileexists 方法:文件是否存在?

  为了避免破坏已有的文件,通常会将“是否覆盖原文件”参数设置为false。但是有可能产生错误,如何避免错误,可以先判断文件是否存在,此时调用filesystemobjet 对象的fileexists方法,具体程序如下:
 ‘fs 为filesystemobject
 if   fs.fileexists(“c:/test.txt”)  then      ‘文件已存在
  ‘其它处理方式
     else
          set txtf=fs.createtextfile(“c:/text.txt”)
     end if

4)readline 和writeline方法:文件的读取与写入
 利用createdtextfile和opentextfile所打开(建立)的是文本文件,要存取文本文件,通常采用逐行读取或逐行写入的方式。读取时必须调用textstream对象的readline方法。写入时必须调用writeline方法。
 
例:
  ‘txtf 和txtf2均为textstream对象
  s=txtf.readline                 ‘读取一行数据,并设置给s变量
  txtf2.writeline   s             ‘将变量s的数据作为文件一行数据写入

5)atendofstream   属性:文件是否已到末尾?
 
当读取位置已经到达文件的末尾时,如果再调用readlin读取数据,将会产生错误,为了避免这个错误,必须判断textstream对象的atendofstream属性,如果为true,就表示文件位置已经到达文件末尾,不可以再读数据。
  
If  not txtf.atendofstream  then
   s=txtf.readline
  endif
  例:将c:/autoexec.bat文件复制成为c:/autoexec.bak文件
  dim  fs  as  new  filesystemobject
  dim  txtf1  as textstream
  dim  txtf2  as textstream
  dim  s  as  string
  set  txtf1=fs.opentextfile(“c:/autoexec.bat”,forreading,true)
  set  txtf2=fs.createtextfile(“c:/autoexec.bak”,true)
while not txtf1.atendofstream          ‘如果txtf1还没有到达文件末尾
  s=txtf1.readline                          ‘从textf1中读取一行数据
  txtf2.writeline  s              ‘将数据作为txtf2的一行数据写入到文件
 wend
 txtf1.close
 txtf2.close

6)readall 方法:一次读取文件的所有内容

 readline方法每次只读取一行数据,readall方法则是一次读取文件的所有内容。
 ‘txtf 为textstream对象

 if  not txtf.atendofstream then
     text1.text =txtf.readall
 end if
 end sub

7)read和write方法:文件的读取和写入

 read与readline方法最大的不同在于readline每次会读取一行数据,但是read方法则是每次读取N个字符,例如:
  n=100
  s=txtf.read (n)             ‘读取100个字符

 如果文件中的字符数不足100,假设只乘下50个字符,那read就会将50个字符全部读取出来。除了读取方式的不同之外,readline只能用来读取文体文件,read方法还可以用来读取二进制文件。(例:.ext 、dll、bmp等格式文件)

 write与writeline方法最大的不同之处在于writeline每次向文件写入数据的时候,都会再多写入chr(13)和chr(10)两个字符,但write则是只是单纯地写入数据。
例:利用readall和write方法将c:/autoexec.bat文件复制成为c:/autoexec.bak文件。
Dim fs as new filesystemobject
 dim txtf as textstream,  txtf2 as  textstream
 set  txtf=fs.opentextfile(“c:/autoexec.bat”,forreading,true)
 set  txtf2=fs.createtextfile(“c:/autoexec.bak”,true)
 txtf2.write  txtf.readall
txtf2.close
 txtf.close

首先:定义一个全局变量textchange  记载文本框是否曾修改过。
       2 在new_Click()事件中
  Private Sub new_Click()
                  If textchange = 1 Then
                           aa = MsgBox("是否保存已修改过的文件", vbOKCancel)
                           If aa = 1 Then
                                  savefile                              ‘用户定义过程,作用保存文件
                            End If
                   End If
                  Text1.Text = ""
                  Text1.SetFocus
                   textchange = 0
               End Sub

Savefile过程:

Private Sub savefile()
  Dim fs As New FileSystemObject
  Dim txtf As TextStream
  CommonDialog1.ShowSave
  Set txtf = fs.OpenTextFile(CommonDialog1.FileName, ForWriting, True)
  txtf.Write Text1.Text
  txtf.Close
  textchang = 0
End Sub

3  在open_Click()事件中
 Private Sub open_Click()
Dim fs As New FileSystemObject
Dim txtf As TextStream
If textchange = 1 Then
   aa = MsgBox("是否保存已有的修改?", vbOKCancel)
   If aa = 1 Then
      savefile
   End If
End If
Text1.Text = ""
textchange = 0
CommonDialog1.ShowOpen
Set txtf = fs.OpenTextFile(CommonDialog1.FileName, ForReading, True)
Text1.Text = txtf.ReadAll
txtf.Close
End Sub
Private Sub save_Click()
savefile
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case "open"
  open_Click
Case "new"
  new_Click
Case "save"
  save_Click
Case "copy"
  mcopy_Click
Case "cut"
  mcut_Click
Case "paste"
  mpaste_Click
End Select
End Sub

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值