VB文件操作
VB教程第8章-文件操作
8.2 文件的打开与关闭
8.2.1 文件的打开
8.2.2 文件的关闭
返回
退出
8.2.1 文件的打开
在VB中,使用Open语句打开或建立文件,为文件的输入输出分 配缓冲区,并确定缓冲区所使用的存取方式,其语法格式为:
Open 文件说明 [For方式] [Access存取类型] [锁定] As [#]文件号 [Len=记录长度]
以下是使用Open 语句的不同用法来实现文件的输出与输入的范例。
(1) 以顺序输入模式打开 client1文件,若要以其他方式打开文件,必须先关闭文件。 Open "client1" For Input As # 1 (2)以只写的二进制方式打开文件。若要以其他方式打开文件,必须先关闭此文件。 Open "client1" For Binary Access Write As #1 (3)下列代码以随机方式打开client1文件,文件中含有用户自定义数据类型 Record 的 记录。若要以其他方式打开文件,必须先关闭此文件。 Type Record ' 定义用户自定义数据类型。 clientID As Integer clientName As String * 16 End Type Dim MyRecord As Record ' 声明变量。 Open "client1" For Random As # 1 Len = Len(MyRecord) (4)下列代码以顺序输出方式打开文件,任何过程都可以读写该文件。若要以其他方式 打开文件,必须先关闭此文件。 Open "client1" For Output Shared As # 1 (5)下列代码以只读的二进制方式打开文件;其他过程不可以读该文件。 Open "client1" For Binary Access Read Lock Read As # 1 (6)用随机方式打开C盘上clients文件夹下的client1文件,记录长度为512字节。 Open "c:\clients\client1" For Random As # 1 Len = 512
VB中文件操作的两种方式
VB中文件操作的两种方式文本文件的操作此种方式是以行为单位进行读取的基本单位,主要应用的方法和函数有Open,Close,Line Input,FreeFile,EOF等。
下面先简述其功能然后结合代码示例进行说明。
Open:顾名思义,它的作用是打开文件,换而言之打开某个文件就是获得某个的控制权,一般情况下当文件处于打开状态时只有打开者才能对它进行操作。
打开文件时要指定一个整数作为文件号,以后的操作都是针对这个代号进行的,而不是针对文件名。
文件号也叫句柄,在程序中一个文件号只能指向一个文件,不能出现两个文件同时具有相同句柄的情况。
Close:关闭文件,即释放文件的控制权。
Line Input:以行为单位取得文件内容,以行为单位是指从当前位置开始到下一个换行符为止的内容。
换行符是Chr(13) & Chr(10)两个字节组成,VB中已定义了常量vbCrLf,可直接使用。
要注意的是Line Input读取一行时会把行尾的换行符去掉,因此我们在读取每行内容时要记得补上换行符才能保持得到的内容与文件一致。
FreeFile:得到空闲的文件号,用这个函数取得文件号可以避免文件号的冲突。
例如:Dim strFileName As String '文件名Dim lngHandle As Long '文件句柄Dim strAll As String '所读取的文本文件的所有内容Dim strLine As String '在循环中存放每行的内容strFileName = "c:/.txt"'获得文件的句柄lngHandle = FreeFile()'For后面的参数表示以何种方式打开文件,Input是读取,Output是覆盖写入,Append是追加写入Open strFileName For Input As lngHandle'循环直到文件尾Do While Not EOF(lngHandle)'每次读取一行存放在strLine变量中Line Input #lngHandle, strLine'每次读取都把所读到的内容连接到strAll变量,由于Line Input 去掉了换行符,所以这里补上strAll = strAll & strLine & vbCrLfLoop'显示得到的全部分内容MsgBox strAll, vbInformation对文本文件的写入相对简单些,有三个步骤:打开文件,写入文本,关闭文件。
第七章 VB中的文件操作
第七章VB中的文件操作7.1文件系统控件1.文件系统控件种类(1)驱动器列表框(DriveListBox):用来显示当前机器上的所有盘符(2)目录列表框(DirListBox):用来显示当前盘上的所有文件夹(3)文件列表框(FileListBox):用来显示当前文件夹下的所有文件名2.重要属性3.重要事件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:\SJ下aaa文件供写入数据,文件号为#1(2)写操作将数据写入磁盘文件所用的命令是:Write# 或Print#。
语法格式:1) Print #文件号,[输出列表]例:Open “D:\SJ\TEST.DAT”For Output As #1Print #1,Text1.Text '把文本框的内容一次性写入文件Close #12)Write #文件号,[输出列表]其中的输出列表一般指用逗号,分隔的数值或字符串表达式。
VB操作文件夹的几个方法
VB操作文件夹的几个方法****************移动文件夹************************1、添加引用"microsoft scripting runtime"2、使用方法Option ExplicitPrivate Sub Form_Load()Dim FileSys As New FileSystemObjectDim FolderObj As FolderSet FileSys = CreateObject("scripting.filesystemobject" )FileSys.CopyFile "c:/ss.txt", "d:/mm.txt", True'拷贝文件FileSys.CopyFolder "c:/1", "d:/2", True'拷贝文件夹End sub***************新建文件夹**************************Dim fso As New FileSystemObject, fdr As Folder,fdr Path as StringfdrPath="C:/newfolder"fdr = fso.CreateFolder(fdrPath)***************重命名文件夹***************Dim aa As New Scripting.FileSystemObjectaa.MoveFolder "c:/1", "c:/2"**************************************************fileName = "c:/dzh/export/1001A1AA.XLS"If Dir(fileName) = "" Then '文件存在sWenJJ_MingC = "000001"ElsesWenJJ_MingC = "000002"End IfpathName = "c:/dzh/dataFX/" & sWenJJ_MingCfso.MoveFolder "c:/dzh/export", pathName '文件夹剪切,重命名fso.CreateFolder "c:/dzh/export" '新建文件夹使用Dir后再使用fso.MoveFolder会产生错误!If fso.FileExists(fileName) = False ThensWenJJ_MingC = "000001"ElsesWenJJ_MingC = "000002"End If改为以上代码判断文件是否存在即可解决问题。
VB第12章 文件操作2h
9of 35
3、 从顺序文件中读取数据
• 首先用 For Input 方式打开顺序文件。 • 使用 Line Input #、Input # 语句或Input()函数将文件读到程 序变量中。 • Line Input #语句,读一行给变量,语法: Line Input #FileNumber,字符串变量 以下代码段逐行读取一个文件:
4、 随机存取文件关闭
• 与顺序文件关闭方式一样。 –关闭所有打开的文件,可使用命令: Close – 关闭特定的文件,可使用命令: Close #FileNumber
20of 35
随机存取文件举例
• 添加一个窗体,定义 Private Type student name As String * 8 lesson As String * 8 score As Integer End Type • 画两个按钮 ,Command1 代码: Dim a As student length = Len(a) Open "d:\abc.txt" For Random As #12 Len = length = “刘” :a.lesson = “数学” :a.score = 87 Put #12, 1, a = “张” :a.lesson = “计算机” : a.score = 92 Put #12, 2, a Close 12
10of 35
从顺序文件中读取数据
• Input #语句: Input # FileNumber,变量表 • Input()函数 • 例子: Dim FileContents As String Open "Filename" For Input As #FileNumber FileContents=Input(LOF(FileNumber),FileNumber) Close #FileNumber • 第三句就可以将文件的所有内容读入FileContents中,LOF函 数用以取得文件的长度。
VB文件操作整理
1 打开Open "E:\in.dat" For Input As #1‘以输入方式打开顺序文件in.dat,将文件中数据读入到程序中;要求in.dat文件必须存在,否则报错!‘在Input、Random、Binary模式下,可以用不同的文件号同时打开同一个文件。
Open "E:\out.txt" For Output As #1‘以输出方法打开顺序文件out.txt,将程序中数据写入到文件中。
若out.txt文件不存在,则新建该文件;若out.txt文件已存在,则覆盖文件中所有内容。
Open "D:\logs.txt" For Append As #1‘以追加方式打开顺序文件logs.txt,将程序中数据写入到文件中。
若logs.txt文件不存在,则新建该文件;若logs.txt文件已存在,则写入的数据添加到原文件的内容之后。
2 读操作1)将文件中10个数据(以空格、回车换行符、逗号等作为分隔)读入一维数组中Dim a(10) As IntegerFor i = 1 To 10Input #1, a(i)Next i2)将文件中以空格或回车换行符分隔的单词读入到变量中,即未知读入数据的个数Dim p As String, st As StringDo While Not EOF(1)Input #1, pst = st & pLoopText1.Text = st3 写操作Print #文件号, 输出列表4 关闭Close ‘关闭所有打开的文件Close 文件号‘关闭指定的文件1 定义记录类型在标准模块中用Public Type –End Type语句,在窗体模块中用Private Type – End Type语句。
字符型字段应使用定长字符型。
2 声明记录型变量3 打开随机文件Open 文件名 For Random As #1 Len =记录长度4 读操作Get #1, 记录号, 记录变量5 写操作Put #1, 记录号, 记录变量6 增加记录在随机文件中增加一条记录,即在文件尾部添加一条记录。
本人对vb文件操作的一些理解
2.当以知工程所在的保存目录时,open语句新建或打开的文件的根目录默认是工程说在的文件夹或磁盘。
说明:文件名可以是半角字符输入,也可以是全角字符输入。
以上我都经过编程测试过,在vb6.0环境中绝对适用。特别是对那些不太清楚vb创建和读取文件的默认路径知识的初学者有所帮助。
第一点:
在vb6.0中当用open语句以output方式新建或打开一个文件并不对其作任何操作,系统默认对其写空。
例:open newfile for output as #1
close #1
在vb6.0中,其功能相当于:
open newfile for output as #1
close #1 ห้องสมุดไป่ตู้
第二点:
问: vb生成的可执行程序中用open语句创建的文件默认路径是什么?
答: 在可执行程序安装的目录下
第三点:
在vb编辑器中用open语句以“读”的方式打开的文件默认在工程所在的文件夹下;在vb编辑器中用open语句以“写”的方式所创建的文件默认路径在vb编程环境的根目录下。
第四点:
1.当一个工程是新建的,在还未保存之前,其将要保存的默认路径将作为open语句创建新文件的根目录。
例如:在e盘打开一个vbp工程文件,当新建一个工程时,其默认保存路径是e盘的。若在该新建工程中用open语句打开一个不存在的text文件,则运行后将在e盘下产生所新建的文件。若e盘下存在文件名为“新建文件夹”文件夹,在open语句中,文件名参数是“新建文件夹\新建文件.txt”,则运行后会在路径为“e\新建文件夹\”下产生“新建文件”的txt文件。
print #1
close #1
VB实验15 文件操作
实验15-3
目的和要求 预备知识
上一页
下一页
退 出
【要求】 (1)程序运行时,将C:\Course.txt文件打 开,并显示第一条记录的内容。 (2)处理好4个命令按钮之间的有效性。 (3)4个命令按钮和 5个文本框都使用控件数 组。
第15页 Visual Basic程序设计实验指导
实验12-4
目的和要求 预备知识
上一页
下一页
退 出
【实验步骤】 (1)界面设计 请参照图 15-4 所示的界面设计窗体。 Text1 设置为 多行文本框,并设置显示水平滚动条和垂直滚动条。两个 命令按钮使用控件数组。 事先建立文件 C:\data.txt ,文件内容可参照图 154所示输入。 (2)添加程序代码 (3)运行工程并保存文件 运行程序,单击“加密”和“解密”按钮,观察运行 结果,最后将窗体文件保存为 F15-4.frm ,工程文件保存 为P15-4.vbp。
上一页
下一页
退 出
【实验步骤】 (1)界面设计 请参照图15-3所示的界面设计窗体。 (2)添加程序代码 ① 在标准模块中添加代码: ② 在窗体中添加代码: (3)运行工程并保存文件 运行程序,观察运行结果,最后将窗体文件保 存为F15-3.frm,标准模块文件保存为M15-3.bas, 工程文件保存为P15-3.vbp。
第12页 Visual Basic程序设计实验指导
实验15-2
目的和要求 预备知识
上一页
下一页
退 出
【实验步骤】 (1)界面设计 请参照图15-2所示的界面设计窗体。 (2)完善程序代码 (3)运行工程并保存文件 运行程序,观察运行结果,最后将窗体文件保 存为F15-2.frm,工程文件保存为 P15-2.vbp。
第9章 VB文件操作
12
第9章 VB文件操作
9.2 文件及其基本操作 9.2.1 文件概述
1. 文件的概念
文件是存储在外存储器上的、用文件名标志的数据的集合。 操作系统对文件实行“按名存取”,所有的文件都必须有文件 名,文件名是处理文件的依据。也就是说,要找到存储在外部介 质上的数据信息,必须先按所提供的文件名找到指定的文件,然 后再从该文件中读取数据信息。用户要向外部介质上存储数据信 息,也必须先建立一个文件(即建立文件名),然后再向该文件
(2)Change事件
当Drive属性值发生变化时,即驱动器列表框中的显示驱动 器发生变化时,就会触发此事件。
7
第9章 VB文件操作
9.1 文件系统控件 9.1.2 目录列表框
目录列表框(DirListBox)显示 系统当前驱动器的目录结构及当 前目录下的所有子目录。这种目 录列表完全符合Windows操作系 统的风格。显示当前目录名及其 下一级目录名。如果用户选中某 一个目录名,并且双击它,将打 开该目录,显示其子目录的结构。 如果目录列表较多,将自动添加 一个滚动条,如图所示。
4
第9章 VB文件操作
9.1 文件系统控件 驱动器列表框 控件
目录列表框 控件
5
文件列表框 控件
第9章 VB文件操作
9.1 文件系统控件 9.1.1 驱动器列表框
驱动器列表框控件(DriveListBox)
是一种下拉式列表框,缺省时在用
户系统上显示当前驱动器号。单击 右侧的下拉箭头,则显示该计算机
17
第9章 VB文件操作
9.2 文件及其基本操作 9.2.1 文件概述
3. 文件的读/写操作
① 打开文件。一个文件必须先打开或建立后才能使用。如果一个文件 已经存在,则打开该文件;如果不存在,则建立该文件。 ② 对文件的读/写操作。读/写操作是文件操作的主要方式。读操作, 也称为输入,即将数据从文件(外存)读入到变量(内存)供程序使用。 写操作,也称为输出,即将数据从变量(内存)写入文件(外存)。 ③ 关闭文件。将数据写入文件,并释放相关的资源。文件操作结束后, 一定要关闭文件,否则暂存于文件缓冲区的数据可能丢失。
VB 第八章 文件操作
代码总结
Private Sub File1_DblClick() Dim selfile As String, i As Double If Right(File1.Path, 1) = "\" Then selfile = File1.Path & File1.FileName Else selfile = File1.Path & "\" & File1.FileName End If Select Case LCase(Right(selfile, 3)) Case "txt" i = Shell("notepad.exe" & " " & selfile, vbNormalFocus) Case "doc" i = Shell("winword.exe" & " " & selfile, vbNormalFocus) Case "bmp", "jpg" i = Shell("mspaint.exe" & " " & selfile, vbNormalFocus) End Select End Sub
' 添加记录 Sub command1_click() With Student .ino=val(text1.text) .strname=text2.text .strsex=iif(option.value,”1”,”0”) .smark=val(text3.text) end with open “c:\stuent.dat” for random as #1 len=len(student) record_no=lof(1)/len(student)+1 label1.caption=record_no put #1,record_no,student close #1 end sub
8.7 VB文件操作
8.7 文件操作[复习目标]1.掌握文件的基本概念:文件的存取方式及文件类型、文件的基本操作步骤(打开、读/写及关闭);2.了解基本文件操作控件:驱动器列表控件、文件夹列表控件及文件列表控件;3.掌握常用文件操作语句(Open、Close、Seek)及文件操作函数(Eof、Seek);顺序文件的打开、读/写及关闭;4.了解常用常用文件操作语句(Lock、Unlock)及文件操作函数(FileAttr、FireLen、FreeFile、Lof、Loc);随机文件及二进制文件的打开、读/写及关闭。
[知识要点]一.文件种类根据数据性质,文件可分为程序文件和数据文件。
1.程序文件:这种文件存放的是由计算机执行的程序支件和可执行文件。
2.数据文件:数据文件用来存放普通的数据。
例:学生成绩、职工工资。
数据文件的类型:顺序文件.随机文件.二进制文件。
(1)顺序文件:文件中数据是以ASCII码方式存储的。
(.txt 文件)特点:其中的数据只能顺序地访问。
(访问:指读或写)(2)随机文件:由一组相同长度的记录组成,记录中的每个字段的长度也是固定的。
此外随机文件的每个记录都有一个记录号。
特点:其中的数据可随意访问。
(3)二进制文件:以二进制方式保存的文件。
特点:①其中的数据是顺序访问的。
②与随机文件相比,不必定义多个数据组成的一条记录的类型,不必指明它的长度。
二.顺序文件1.打开文件先打开后才能使用,如果一个文件已经存在,则打开该文件;如果不存在则建立该文件语句格式:Open文件名As[#]文件号方式 Output顺序输出方式lnput顺序输入方式Append指定顺序输出方式与 Output不同,当用 Append方式打开文件时,文件指针被定位在文件末尾2.顺序文件写操作(1)Print#语句格式Print#文件号,Tab(n)[表达式表][;|,]]功能:把数据写入文件中(2) Write#语句格式: Write#文件号,表达式表说明:①文件号和表达式表的含义同前,用Write#语句时,文件必须以 Output或Append方式打开,表达式表中的各项以逗号分开。
VB文件操作范文
VB文件操作范文在VB中,可以使用FileSystemObject对象和File对象来进行文件操作。
FileSystemObject对象是VB中的文件系统对象,它可以用来处理文件夹和文件,包括创建、删除、重命名等操作。
File对象则是用来处理单个文件,包括读写文件内容等操作。
下面是VB文件操作常用的一些方法和属性:1. CreateTextFile方法:创建一个新的文本文件。
示例:`FileSystemObject.CreateTextFile("C:\test.txt")`2. DeleteFile方法:删除指定的文件。
示例:`FileSystemObject.DeleteFile("C:\test.txt")`3. MoveFile方法:移动指定的文件。
示例:`FileSystemObject.MoveFile("C:\test.txt","C:\newfolder\test.txt")`4. CopyFile方法:复制指定的文件。
示例:`FileSystemObject.CopyFile("C:\test.txt","C:\newfolder\test.txt")`5. GetFile方法:返回一个对指定文件的引用。
示例:`FileSystemObject.GetFile("C:\test.txt")`6. OpenTextFile方法:打开一个文本文件,并返回一个TextStream 对象,可以用来读取或写入文件内容。
示例:`FileSystemObject.OpenTextFile("C:\test.txt", 1)` 7. ReadAll方法:一次性读取整个文件的内容。
示例:`TextStreamObject.ReadAll(`8. WriteLine方法:向文件中写入一行文本。
VB文件操作
又可以使用FSO对象的CopyFile方法。
3.访问已有的驱动器、文件夹和文件
打开:Open pathname For Binary As filenumber 关闭:Close
8.4 二进制文件操作—读、写操作
二、二进制文件的读、写操作
⑴ Get [#]filenumber,[recnumber],varname ⑵ Put [#]filenumber,[recnumber] ,varname
①GetDrive方法:返回与指定路径中驱动器对应的Drive对象。
8.8 使用文件系统对象编程—FSO对象
② GetFolder方法:返回与指定路径中驱动器对应的Folder
对象。 ③ GetFile方法:返回与指定路径中文件对应的File对象。 4.访问对象的属性 获得对象的句柄,就能访问其属性。
文件夹操作的一些方法创建文件夹objectcreatefolderfoldername删除文件夹filesystemobjectdeletefolderfolderspecforce或folderdeleteforce移动文件夹filesystemobjectmovefoldersourcedestination或foldermovedestination88使用文件系统对象编程管理文件夹复制文件夹filesystemobjectcopyfoldersourcedestinationoverwrite或foldermovedestinationoverwrite检查文件夹是否存在filesystemobjectfolderexistsfolderspec获得当前文件夹的名称filesystemobjectgetabsolutepathnamepathspec获得已有folder对象的一个实例filesystemobjectgetfolderfolderspec88使用文件系统对象编程管理文件夹获得文件夹的父文件夹的名称filesystemobjectgetparentfolderpath获得特殊文件夹的路径objectgetspecialfolderfolderspec3
VB文件操作
关闭文件
13.1顺序文件打开
顺序文件:
记录的逻辑顺序与存储顺序相一致,对文件的读写操作只能按记 录的顺序进行。 优点:占空间少,易使用 缺点:无法灵活随意存取,查找修改不便,只适用于有规律,不 经常修改的数据
打开与关闭
格式:Open 文件名 For Input| Output| Append As [#] 文件号 格式 [Len=记录长度]
13.1 顺序文件打开
顺序文件的关闭 格式 Close 文件号 1[,文件号2,[,…..]]
一个Close语句可以同时关闭若干个已打开的文件,其中“文 件号”是用Open语句打开时指定的文件标识。
13.2 顺序文件读、写操作
顺序文件的“写”操作
将内存中的数据存入磁盘称为“写”操作。
格式 Print| Write # 文件号, 输出表达式列表 [,|;] 说明 (1)文件号与Open后的文件号一致
(2)“输出表达式列表”是指可以输出若干项。为了使记录 按列输出,常常要用到Spc(n)和Tab(n)两个函数。省略表达 式列表,则向文件写入一个空行。 (3)用Print#时,每个数据项之间没有分隔符,字符型数据 不加双引号;而如果选用Write#,则数据项之间用“,”分 隔,字符型数据用双引号括起。 (4)Print#语句常与Line Input#语句配合使用。
13.2 顺序文件读、写操作
格式[2] Line Input# 文件号, 字符型(或可变型) 变量名 注意(1)将指定数据文件中的一行读入一个字符型(可 变型)变量或字符型数组元素中
(2)3] Input$(整数,[#] 文件号) 注意:整数是要读取的字符个数,Input函数返回从文件中 读出的所有字符,包括括号、回车符、引号和空格符 例:str1$=Input$(50, #2)表示从2号文件读取50个字符赋 给字符型变量str1
VB文件操作
Filename = CommonDialog1.Filename
F = FreeFile
Open Filename For Input As F
… … …
而下面的代码则从文件【另存为】对话框中输入文件名,以便建立从文件名框中输入或选定的文件:
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files (*.txt)|*.txt| Batch Files (*.bat)|*.bat"
对二进制文件,在TYPE类型说明中先不说明长度,待字符串存入时,再计算字符串长度,并用2个字节保存这个长度;读取数据时,先读取长度,再读取字符。因而在记录长度变动较大的情况,用二进制存取方式可节约存储空间。但另一方面,因为它没有固定长度的记录,不能向随机文件那样任意取出第几条记录,必须建立一个索引表来指示每个记录的起始地址,这就给编程带来了困难。
顺序存取方式适合以整个文件为单位存取的场合。主要用于文本文件,也最适合于文本文件,因为处理文本数据时,都是整篇文章调出来修改,然后再整篇文章重新保存,很少有只调出第几行,修改后再存回第几行的情况。采用顺序存取方式的例子很多,如Windows的记事本、书写器等。
顺序文件也可以记录为单位,每个记录也可划分为若干个字段,但这样的数据结构一般不按顺序方式存取。
表6-1 居民区人员登记表(jmdjb.dat)
身份证号
姓名
性别
籍贯
职业
联系方式
101
小米
女
北京
企业主管
010
102
张明哲
女
上海
研究员
021
第09章 VB文件操作
If KeyCode = vbKeyDelete Then
ChDrive Drive1.Drive ChDir File1.Path
' 如果按下Del键
' 改变当前驱动器 ' 改变当前目录
If MsgBox("要删除文件?", vbOKCancel, "文件删除") = vbOK Then
Kill File1.FileName File1.Refresh
格式:Kill 文件名
功能:删除文件。
例如:Kill "D:\myfiles\TestFile"
例如:Kill "*.TXT"
14
第9章 VB 文件操作
9.2.2 文件操作语句 (3)Name语句 格式:Name 原文件名 As 新文件名 功能:重新命名一个文件或目录。 例如:Name "d:\old\old.doc" As "d:\new\new.doc" (4)ChDrive语句
Text1.Text = ""
Open "c:\1.txt" For Input As #1 Do While Not EOF(1)
Line Input #1, InputData
Text1.Text = Text1.Text + InputData + vbCrLf '回车换行 Loop Close #1 End Sub
22
' 先输出5个空格,再输出字符串
' 在第10列上输出字符串
' 以紧凑格式输出10和20, 再以宽行格式输出30
第9章 VB 文件操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB文件操作(一)2009年12月01日星期二 12:28在程序设计中,文件是十分有用和不可缺少的。
由应用程序产生或处理过的数据,往往在应用程序结束以前仍需保留,或者为了存取方便,提高上机效率,需要将由输入设备输入的数据保存在存储介质上(如磁盘,磁带等)。
这些数据是以文件的方式保存在存储介质上的,需要读取数据时可以从外存储器调出,需要保存时可以由内存写到外存。
在程序中可直接对文件进行处理,可以保存、访问它所处理的数据,也可以使其它程序共享这些数据。
VB具有强大的文件处理能力,可以处理顺序文件、随即文件和二进制文件,同时提供了与文件处理有关的控件,也提供了大量与文件管理有关的语句、函数。
本章介绍文件的结构、三种文件类型、VB对文件和目录维护的主要语句和函数、VB程序对文件的操作方法(文件系统对象)。
6.1 文件在VB程序中,需要输入少量数据,可通过程序中直接赋值来完成,或通过输入函数以获取数据(如使用函数InputBox),但输入大量的数据时,这些方法易造成数据输入和数据存储不方便,在重复输入相同的数据时,易造成数据不一致。
鉴于这种情况,可以将这些大量的数据存储在一个或多个文件中,使用时再从相应的文件中读取。
通常情况下,计算机处理的大量数据都是以文件的形式存放在外部介质(如磁盘)上,操作系统也是以文件为单位对数据进行管理。
当访问外部介质上存储的数据时,先按文件名找到所需要的文件,再从该文件中读取相关数据;在外部介质中存入数据时,也必须先建立一个文件,才能向它写入数据。
在介绍文件结构和类型之前,简单介绍对文件命名的基本规则。
在Visual Basic 中,文件说明的一般格式为:设备名:文件引用名例如: D:myfile.abc这里的“D:”是设备名,而"myfile.abc”是文件引用名。
设备名是存放文件的设备的名称,如磁盘、磁带、打印机等。
在微机中,存放文件的主要设备是磁盘,其名称通常为A:,B:,C:,D:等,分别代表A,B,C,D等驱动器。
在DOS环境下,文件引用名由两部分组成,即文件基本名和扩展名。
其中文件基本名常以字母开头,最多不超过8个字符;扩展名是可选的,最多不超过3个字符;在文件基名和扩展名之间有一个圆点。
通常把这种文件名称为“8.3”格式。
如上例中的“myfile.abc”在Windows中可以使用长文件名,其长度最多不超过255个字符,并能自动维护传统的“8.3”格式的文件名。
下列字符可用做文件基本名和扩展名:(1)英文字母:a~z、A~Z(2)数字:0~9(3)特殊字符:$ # & @ ! % ( ) _ - | ,^ ~ /Visual Basic窗体文件的扩展名为.frm,工程文件的扩展名为.vbp,标准模块文件的扩展名为.bas,可执行文件的扩展名为.exe,等等。
用户可使用自己的扩展名,但不要与系统使用的扩展名相矛盾。
完整的文件说明由设备名和文件引用名构成。
对于磁盘文件来说,还可以含有路径。
例如:D:\textfile\exercise.txt..\grades.qtr6.1.1 文件的结构为了有效地对数据进行存储和读取,文件中的数据必须以某种特定的格式存储,这种特定的格式就是文件的结构。
Visual Basic的文件由记录组成,记录由字段组成,字段又由字符组成。
1.字符(character):是构成文件的最基本单位。
字符可以是数字、字母、特殊符号或单一字节。
这里所说的“字符”一般为西文字符,一个西文字符用一个字节存放。
如果为汉字字符,包括汉字和“全角”字符,则通常用两个字节存放。
也就是说,一个汉字字符的存储大小相当于两个西文字符的存储大小。
一般把用一个字节存放的西文字符称为“半角”字符,而把汉字和用两个字节存放的字符称为“全角”字符。
注意,VisualBasic 6.0支持双字节字符,当计算字符串长度时,一个西文字符和一个汉字都作为一个字符计算,但它们所占的内存空间是不一样的。
例如,字符串“VB程序设计语言”的长度为8,而所占的字节数为14。
2.字段(field):也称域。
字段由若干个字符组成,用来表示一项数据。
例如邮政编码“450002”就是一个字段,它由6个字符组成;而姓名“张前”也是一个字段,它由2个汉字组成。
3.记录(record):由一组相关的字段组成。
例如在通信录中,每个人的姓名、单位、地址、电话号码、邮政编码等构成一个记录。
4.文件(file):文件由记录构成,一个文件含有一个以上的记录。
例如在通信录文件中有129个人的信息,每个人的信息是一个记录,129个记录构成一个文件。
例如,一居民区人员登记可整理一个二维表的形式,如表6-1所示。
在这个表中,每位居民的信息是一个记录,它由“身份证号”、“姓名”、“性别”、“籍贯”、“职业”、“联系方式”等6个数据项构成。
表6-1 居民区人员登记表(jmdjb.dat)身份证号姓名性别籍贯职业联系方式101 小米女北京企业主管010102 张明哲女上海研究员021 ………………………………………………129 张前男香港公务员852读者可以根据以上定义分别找出各记录的数据信息。
需要注意的是:其中有一个字段称为“关键字”,能够唯一的识别出对应的记录,如表6-1中的“身份证号”字段。
6.1.2 文件的种类和存取类型VB有三种文件:顺序文件、随机文件和二进制文件。
存取一个文件时,可根据文件所含数据类型的不同,采用不同的存取方式,对应的文件存取类型有顺序存取、随机存取和二进制存取。
● 顺序文件:存入一个顺序文件时,依序把文件中的每个字符转换为相应的ASCII码存储;读取数据时必须从文件的头部开始,按文件写入的顺序,一次全部读出。
不能只读取它中间的一部分数据。
用顺序存取方式形成的文件称为顺序文件,顺序存取方式规则最简单。
顺序存取方式适合以整个文件为单位存取的场合。
主要用于文本文件,也最适合于文本文件,因为处理文本数据时,都是整篇文章调出来修改,然后再整篇文章重新保存,很少有只调出第几行,修改后再存回第几行的情况。
采用顺序存取方式的例子很多,如Windows的记事本、书写器等。
顺序文件也可以记录为单位,每个记录也可划分为若干个字段,但这样的数据结构一般不按顺序方式存取。
● 随机文件:随机存取的文件由一组固定长度的记录组成,每条记录分为若干个字段,每个字段的长度固定,可以有不同的数据类型。
一般用自定义数据类型来建立这些记录。
用随机存取方式形成的文件称为随机文件。
随机文件中每个记录有一个记录号,通过指定记录号,可随机地访问每一笔数据,不象顺序文件那样必须按顺序存取。
随机文件适合于以记录为单位存取的场合。
● 二进制文件:二进制存取方式可以存储任意希望存储的数据。
它与随机文件很类似,但没有数据类型和记录长度的限制。
用二进制存取方式形成的文件称为二进制文件。
在随机文件中,有些字符型字段不同记录的长度相差很多,但为了使最长的字符串能够存入,就必须把该字段的长度说明为最长字符串的长度,这样就会浪费了大量的存储空间。
为了节省存储空间,可以使用二进制存取文件。
对二进制文件,在TYPE类型说明中先不说明长度,待字符串存入时,再计算字符串长度,并用2个字节保存这个长度;读取数据时,先读取长度,再读取字符。
因而在记录长度变动较大的情况,用二进制存取方式可节约存储空间。
但另一方面,因为它没有固定长度的记录,不能向随机文件那样任意取出第几条记录,必须建立一个索引表来指示每个记录的起始地址,这就给编程带来了困难。
然而VB在其发展的过程中,已有了强大的数据库功能,可利用Data控件、ADO 数据控件等使应用程序与数据库连接,从而方便地对数据来回读写,完全可以代替文件直接访问的功能(可参看有关“VB与数据库连接”章节内容)。
6.2 顺序文件在对使用旧文件或创建新文件前,首先要说明文件存储位置和名字,并指定对文件的处理方式,即指要确定对文件操作的有关属性的属性值。
无论用哪种存取方式对数据文件进行操作,都必须先打开文件,然后向文件中写入或读出数据,最后关闭文件。
访问一个顺序文件时,通常是三个步骤:打开文件(若此文件不存在,则要建立一个新的文件)、读取/写入数据、关闭文件。
6.2.1 顺序文件的打开与关闭1.打开文件语句:Open语法格式如下:Open <文件名> For <打开方式> As # <文件号> [ Len = 缓冲区大小 ] 其中:●Open、For、As、Len等是VB关键字。
●文件名:指定打开的文件名(文件名用字符串表示),包括盘符、路径、文件主名及扩展名。
例如:”E:\MF\Test.txt”。
●打开方式方式:指定文件的打开方式,打开文件后,只能按指定的方式进行一种操作。
打开一个顺序文件有三种方式可选:◆Input:打开文件后,从文件中读取数据◆Output:打开文件后,向文件中写入数据,即重写一个顺序文件◆Append:打开文件后,向文件末尾添加数据若指定Input方式,则当指定文件不存在时产生一个错误;若指定Output或Append方式,则当文件不存在时建立该文件,文件已存在时写入的数据,前者覆盖,后者追加。
所以Open具有建立和打开文件的双重功能。
对同一文件用一种方式打开后,在关闭之前,不能再以另一种方式打开。
●文件号:VB应用程序每打开一个文件,必须指定一个文件号,且不能与其它打开的文件占用的文件号重复。
文件号的范围是1 - 511之间的整数。
打开文件后,指定的文件号就与该文件相关联,程序通过文件号来对文件进行读、写操作,直到关闭文件。
关闭文件后,该文件号被释放,可供打开其他文件时使用。
如果在程序中已打开多个文件(此时占用的文件号未必连续),则再打开文件时,为了避免文件号重复,可使用FreeFile函数,该函数返回当前程序未被占用的最小的文件号,可通过把函数值赋给一个变量来取得这个文件号。
例如,执行下面的代码,FileNumber = FreeFileOpen "E:\VB\Exercise.TXT" For Output As # FileNumber则在E盘VB文件夹下建立Exercise.TXT数据文件,文件号为FileNumber,如果这个文件已经存在,则原有文件被覆盖;如果执行下面的代码,FileNumber = FreeFileOpen "E:\VB\Exercise.TXT" For Append As # FileNumber也在E盘VB文件夹下建立Exercise.TXT数据文件,文件号为FileNumber,但当该文件已经存在时,新写入的数据追加到原有数据的后面。
●缓冲区大小:当在文件与程序之间拷贝数据时,选项len参数指定缓冲区的字符数,其范围为1 - 32767,缺省值为512字节。