【经管类】存取文件的方法有许多种- 第九章文件

上传人:Jerm****014 文档编号:50051616 上传时间:2018-08-06 格式:PPT 页数:25 大小:899KB
返回 下载 相关 举报
【经管类】存取文件的方法有许多种- 第九章文件_第1页
第1页 / 共25页
【经管类】存取文件的方法有许多种- 第九章文件_第2页
第2页 / 共25页
【经管类】存取文件的方法有许多种- 第九章文件_第3页
第3页 / 共25页
【经管类】存取文件的方法有许多种- 第九章文件_第4页
第4页 / 共25页
【经管类】存取文件的方法有许多种- 第九章文件_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《【经管类】存取文件的方法有许多种- 第九章文件》由会员分享,可在线阅读,更多相关《【经管类】存取文件的方法有许多种- 第九章文件(25页珍藏版)》请在金锄头文库上搜索。

1、第九章 文件存取文件的方法有许多种,可以使用VB提供函数,使用windows Api函数等,但是最简单的方法是使用filesystemobject对象。而它并 非VB内置对象,需引用才可以使用。 1filesystemObject对象引用 “工程/引用/microsoft scription Runtime” 在对象浏览器窗口中选“scripting”模块,看到增了许多对象,drive filesystemobject textstream file等其中filesystemobject是这些对象的 关键,想要使用其它对象,都必须先建立filesystemobject对象。 文件存取 dim

2、fs as new filesystemobject 建立filesystemobject对象 dim txtf as textstream 定义了一个textstream对象变 量 textstrem对象与文件的读写 所有文件都必须先打开,才能读写,filesystemobjet对象所提供的打 开文件的方法有两种:opentextfile打开文件 createtextfile建立文件 通过filesystemobject所打开的文件是一个TextStream对象,而通过 textstream对象的各种方法和属性,就可以进一步读写文件。 1)opentextfile 方法:打开文件 set t

3、extstream对象名=filesystemobject名.opentextfile(文件名,IO模式 , 是否自动建立文件) 文件名:建议写入完整路径的文件名。 IO模式:可设置成forreading(=1)、forwrting(=2)或forappending(=8) 。 如果设置成forreading,则打开的文件是只读的;如果设置成forwriting,则打开的文件是可写的,而原来文件的内容会被清除;如果设置成forappending,则打开的文件是可写的,但原文件的内容不会被清除,数据会从文件的最后面开始写入。参数缺省: 表示forreading 只读。是否自动建立文件:可设置成t

4、rue或false。设置为:true 则当文件不存在时,会自 动 建立一个新文件。设置为:false 则当文件不存在时,就会产生错误。缺省时:表示为false。 例:将c:autoexec.bat打开成为只读文件dim fs as new filesystemobjectdim txtf as textstreamset txtf=fs.opentextfile(“c:autoexec.bat”)例:将c:text.txt打开成“从文件最后面写入的文件”dim fs as new filesystemobjectdim txtf as textstreamset txtf=fs.opentex

5、tfile(“c:test.txt”,forappending,true)txtf.close 2)createtextfile 方法:建立文件 set textstream对象名=filesystemobject名.createtextfile(文件名称,是 否覆盖原文件) 文件名称:建议写入完整路径的文件名。 是否覆盖原文件:可设置成true或false。可缺省,缺省时是true,覆盖原文 件如果设置成true,则当文件存在的时候,原文将会被破坏,而以新文件所替代。如果设置成false,则当文件存在时,将会产生错误 例:建立一个c:text.txt,若c:test.txt存在,则覆盖它。d

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

7、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)

8、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 txtf

9、2 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 方

10、法:一次读取文件的所有内容 readline方法每次只读取一行数据,readall方法则是一次读取文件 的所有内容。 txtf 为textstream对象 if not txtf.atendofstream thentext1.text =txtf.readall end if end sub7)read和write方法:文件的读取和写入 read与readline方法最大的不同在于readline每次会读取一行数据 ,但是read方法则是每次读取N个字符,例如: n=100 s=txtf.read (n) 读取100个字符 如果文件中的字符数不足100,假设只乘下50个字符,那read就 会

11、将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, txtf

12、2 as textstream set txtf=fs.opentextfile(“c:autoexec.bat”,forreading,true) set txtf2=fs.createtextfile(“c:autoexec.bak”,true) txtf2.write txtf.readalltxtf2.close txtf.close 例:将 ch08练习5a.vbp复制到ch09文件夹,并改名为:练习1.vbp 为该程序添加“文件”菜单,其下子菜单为:新建、打开、保存 、退出。并添加工具栏按钮。使得该程序具有保存文件、打开文件、新建文件功能。首先:定义一个全局变量textchange

13、 记载文本框是否曾修改过。2 在new_Click()事件中 Private Sub new_Click()If textchange = 1 Thenaa = MsgBox(“是否保存已修改过的文件“, vbOKCancel)If aa = 1 Thensavefile 用户定义过程,作用保存文 件End IfEnd IfText1.Text = “Text1.SetFocustextchange = 0End SubSavefile过程: Private Sub savefile()Dim fs As New FileSystemObjectDim txtf As TextStreamCo

14、mmonDialog1.ShowSaveSet txtf = fs.OpenTextFile(CommonDialog1.FileName, ForWriting, True)txtf.Write Text1.Texttxtf.Closetextchang = 0 End Sub 3 在open_Click()事件中Private Sub open_Click() Dim fs As New FileSystemObject Dim txtf As TextStream If textchange = 1 Thenaa = MsgBox(“是否保存已有的修改?“, vbOKCancel)If

15、aa = 1 ThensavefileEnd If End If Text1.Text = “ textchange = 0 CommonDialog1.ShowOpen Set txtf = fs.OpenTextFile(CommonDialog1.FileName, ForReading, True) Text1.Text = txtf.ReadAll txtf.Close End SubPrivate 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_Clic

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号