最简单的方法是使用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”,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 FileSystemObjectDim txtf As TextStreamIf textchange = 1 Then aa = MsgBox("是否保存已有的修改?",vbOKCancel) If aa = 1 Then savefile End IfEnd IfText1.Text = ""textchange = 0CommonDialog1.ShowOpenSet txtf = fs.OpenTextFile(CommonDialog1.FileName,ForReading,True)Text1.Text = txtf.ReadAlltxtf.CloseEnd SubPrivate Sub save_Click()savefileEnd SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)Select Case Button.KeyCase "open" open_ClickCase "new" new_ClickCase "save" save_ClickCase "copy" mcopy_ClickCase "cut" mcut_ClickCase "paste" mpaste_ClickEnd SelectEnd Sub (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|