VB的关于文件保存的方式?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB的关于文件保存的方式?相关的知识,希望对你有一定的参考价值。
文本保存和读取有多少种方式? 目前我只知道两种分别为Open "C:\..." For OutPut As #1和Open "C:\..." For inPut As #1 哪个高手可以告诉我一下。
参考技术A 1.打开顺序访问文件当以顺序型访问打开一个文件时,可执行以下操作:
从文件输入字符
(Input)
向文件输出字符
(Output)
把字符加到文件
(Append)
要顺序型访问打开一个文件,Open
语句使用以下语法:
Open
pathname
For
[Input
|
Output
|
Append]
As
filenumber
[Len
=
buffersize]
从文件中读取字符串
要检索文本文件的内容,应以顺序
Input
方式打开该文件。然后使用
Line
Input#,Input(
),或者
Input#
语句将文件拷贝到程序变量中。
Line
Input
#FileNum,
NextLine
Input
#FileNum,
name,
street,
city,
state,
zip
LinesFromFile
=
Input(n,
FileNum)
要在顺序文件中存储变量的内容,应以顺序
Output
或
Append
打开它,然后使用
#
语句。例如,文本编辑器可以使用以下代码行来把一个文本框的内容拷贝到文件。
#FileNum,
TheBox.Text
Visual
Basic
也支持
Write
#
语句,它把一列数字和/或字符串表达式写入文件。它自动地用逗号分开每个表达式,并且在字符串表达式端放置引号。
Write
#FileNum
AnyString,
AnyNumber
注意
如果正在用顺序型访问的
Write
#
与
Input
#
语句,可考虑换用随机型
或二进制型访问,因为它们更适合面向于记录的数据。
2.打开随机访问的文件
要打开随机访问的文件,Open
语句使用以下语法:
Open
pathname
[For
Random]
As
filenumber
Len
=
reclength
因为
Random
是缺省的访问类型,所以
For
Random
关键字是可选项。
可用以下代码打开文件:
Open
"MYFILE.FIL"
For
Random
As
FileNum
Len
=
RecLength
把记录读入变量
使用
Get
语句把记录复制到变量。
Get
FileNum,
Position,
Employee
把变量写入记录
使用
Put
语句把记录添加或者替换到随机型访问打开的文件。
替换记录
要替换记录,请使用
Put
语句,指定想要替换的记录位置,例如:
Put
#FileNum,
Position,
Employee
添加记录
要向随机访问打开的文件的尾端添加新记录,应使用前述代码段中所示的
Put
语句。把
Position
变量的值设置为比文件中的记录数多
1。例如,要在一个包含五个记录的文件中添加一个记录,把
Position
设置为
6。
LastRecord
=
LastRecord
+
1
Put
#FileNum,
LastRecord,
Employee
删除记录
通过清除其字段可以删除一个记录,但是该记录仍在文件中存在。通常文件中不能有空记录,因为它们会浪费空间且会干扰顺序操作。最好把余下的记录拷贝到一个新文件,然后删除老文件。
3.打开二进制型访问的文件
要为二进制型访问打开文件,应使用以下
Open
语句的语法:
Open
pathname
For
Binary
As
filenumber
通过使用二进制型访问可使磁盘空间的使用降到最小。因为这不需要固定长度的字段,类型声明语句可以省略字符串长度参数。
4.用
File
System
Objects
创建文件并添加数据
有三种不同方法来创建一个顺序文本文件(有时被称为“文本流”)。一种方法就是使用
CreateTextFile
方法。要创建一个空文本文件,可以:
Dim
fso
As
New
FileSystemObject,
fil
As
File
Set
fil
=
fso.CreateTextFile("c:\testfile.txt",
True)
另一种方法是使用
FileSystemObject
对象的
OpenTextFile
方法,该对象的
ForWriting
标志设置为:
Dim
fso
As
New
FileSystemObject,
ts
As
New
TextStream
Set
ts
=
fso.OpenTextFile("c:\test.txt",
ForWriting)
或者使用带
ForWriting
标志设置的
OpenAsTextStream
方法:
Dim
fso
As
New
FileSystemObject,
fil
As
File,
ts
As
TextStream
Set
fso
=
CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile
("test1.txt")
Set
fil
=
fso.GetFile("test1.txt")
Set
ts
=
fil.OpenAsTextStream(ForWriting)
添加数据到文件
文本文件一经创建,就可以分三步向其中加入数据:
打开文本文件以备写入数据。
写入数据。
关闭文件。
要打开文件,可以使用下面两种方法中的任一种:
File
对象的
OpenAsTextStream
方法,或
FileSystemObject
对象的
OpenTextFile
方法。
要向打开的文本文件中写入数据,可以使用
TextStream
对象的
Write
或
WriteLine
方法。它们之间的唯一差别是
WriteLine
在指定的字符串末尾添加换行符。
如果想要向文本文件中添加一个空行,请使用
WriteBlankLines
方法。
要关闭一个已打开的文件,请使用
TextStream
对象的
Close
方法。
例:
Sub
Create_File()
Dim
fso,
txtfile
Set
fso
=
CreateObject("Scripting.FileSystemObject")
Set
txtfile
=
fso.CreateTextFile("c:\testfile.txt",
True)
txtfile.Write
("这是一个测试例子。")
'
写入一行。
'
写入一行带有换行符的文本。
txtfile.WriteLine("Testing
1,
2,
3.")
'
向文件中写入三个换行符。
txtfile.WriteBlankLines(3)
txtfile.Close
End
Sub
使用
File
System
Objects
读取文件
要从一个文本文件中读取数据,请使用
TextStream
对象的
Read、
ReadLine
或
ReadAll
方法:
任务
方法
从一个文件中读取指定数量的字符
Read
读取一整行(紧跟,但不包括,换行符)
ReadLine
读取一个文本文件的所有内容
ReadAll
如果使用
Read
或
ReadLine
方法并且想要跳过数据的某些部分,可以使用
Skip
或
SkipLine
方法。
这些读取方法产生的文本被存储在一个字符串中,而这个字符串可以在一个控件中显示,也可以被字符串操作符分解(诸如
Left、
Right
和
Mid)、合并等等。
注意
vbNewLine
常数包含一个或多个字符(取决于操作系统)使得光标移至下一行的开头(回车/换行)。请注意,有的字符串末尾可能有这样的非打印字符。
VB达人请进,关于VB引入TXT文件的问题
小弟想在VB中引入一个TXT文件,并用VB对TXT文件中的数据进行处理,应该怎样编码?
急用,谢谢~
语法格式如下:
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 = FreeFile
Open "E:\VB\Exercise.TXT" For Output As # FileNumber
则在E盘VB文件夹下建立Exercise.TXT数据文件,文件号为FileNumber,如果这个文件已经存在,则原有文件被覆盖;如果执行下面的代码,
FileNumber = FreeFile
Open "E:\VB\Exercise.TXT" For Append As # FileNumber
也在E盘VB文件夹下建立Exercise.TXT数据文件,文件号为FileNumber,但当该文件已经存在时,新写入的数据追加到原有数据的后面。
●缓冲区大小:当在文件与程序之间拷贝数据时,选项len参数指定缓冲区的字符数,其范围为1 - 32767,缺省值为512字节。例如,执行下面的代码,
Open "E:\VB\Exercise.TXT" For Input As # 1 len = 1024
则打开E盘VB文件夹下的数据文件Exercise.TXT,为读取数据作准备,与之关联的文件号为1,读写缓冲区为1024字节。
在程序中,获取文件名可通过【打开】文件或文件【另存为】对话框实现。例如,下面的代码从【打开】文件对话框中打开一个文件,以便从该文件中读取数据:
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files (*.txt)|*.txt| Batch Files (*.bat)|*.bat"
CommonDialog1.FilterIndex = 2
CommonDialog1.ShowOpen
Filename = CommonDialog1.Filename
F = FreeFile
Open Filename For Input As F
… … …
而下面的代码则从文件【另存为】对话框中输入文件名,以便建立从文件名框中输入或选定的文件:
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files (*.txt)|*.txt| Batch Files (*.bat)|*.bat"
CommonDialog1.FilterIndex = 2
CommonDialog1.ShowSave
Filename = CommonDialog1.Filename
F = FreeFile
Open Filename For Otput As F
… … …
建立【打开】文件或文件【另存为】对话框用公共对话(CommonDialog)控件,见相关章节。
注意:用公共对话控件可创建【打开】文件和文件【另存为】对话框,但它只能为建立和访问的文件输入文件名提供一个可视的界面,对话框本身不能完成打开文件和保存文件的功能,须编写代码完成。
2、 关闭文件语句:Close
语法格式为:
Close [ #文件号] [, #文件号] … …
该语句的功能是关闭指定的文件,释放缓冲区;若不指定文件号,则关闭所有打开的文件。
程序运行结束时,会自动关闭所有打开的文件,但对打开的文件完成操作后及时关闭该文件是个好习惯,不仅节约内存,也避免意外情况丢失数据。程序运行时将写入文件的数据均放在文件读写缓冲区,待整批写入文件。
6.2.2 顺序文件的写操作
要将程序中的数据写到一个顺序文件,先打开文件以进行顺序输出或添加(注意此时的选用打开方式,选择Output则覆盖原来文件,选择Append则在原来文件后添加数据),可用下面的命令语句写入数据。
1、 Print # 语句:用于为顺序文件写入数据
语法格式为:
Print # 文件号 [, 输出项表]
其中输出项表是要输出的表达式或表达式列表,输出格式同Print方法。
例如,下面的代码在E盘VB文件夹下建立Exercise.TXT数据文件,并往文件中输入字符,最后关闭文件:
Open "E:\VB\Exercise.TXT" For Output As #1 ‘打开文件以便输出
Print #1,”顺序文件写入数据测试” ‘向文件中写入字符串”This is a test”
Print #1, ‘输出一个空行
Print #1,”Zone 1”;Tab;”Zone 2” ‘在两个打印区输出
Print #1,Spc(5);”5 leading spaces” ‘先输出5个空格,再输出字符串
Print #1,Tab(10);”Hello” ‘在第10列上输出字符串
Close #1 ‘关闭文件
下面的代码把文本框Text1中的内容写到一个顺序文件:Exercise.TXT,存放于D:\:
Open "D:\Exercise.TXT" For Output As #2
Print #2, Exercise.Text
Close #2
2、 Write # 语句:将记录写入文件
语法格式为:
Write # 文件号[,表达式列表]
该语句适用于向划分了字段的记录格式的文件写入数据。“表达式表”中的每个表达式写入一个字段,一个Write # 语句一次写入一个记录。表达式表中包含多个表达式时以逗号分隔。缺省表达式时写入一个空行。
用Write # 语句写入的数据各个字段间自动加逗号分隔符,字符型数据自动加双引号定界符,记录尾自动加回车换行符。
例如,用Write # 建立由表6-2给出的居民区人员登记表:
表6-2 居民区人员登记表(jmdjb.dat)
身份证号 姓名 性别 年龄 出生年月
101 小米 女 24 11/1/1980
102 张明哲 女 6 3/4/1998
……… ……… ……… ……… ………
999 张前 男 1 10/6/2003
代码如下:
Dim sfzh(3) As String, xm(3) As String, xb(3) As String, nl(3) As Integer, csny(3) As Date
sfzh(1) = "101": xm(1) = "小米": xb(1) = "女": nl(1) = 24: csny(1) = #11/1/1980#
sfzh(2) = "102": xm(2) = "张明哲": xb(2) = "女": nl(2) = 6: csny(2) = #3/4/1998#
sfzh(3) = "999": xm(3) = "张前": xb(3) = "男": nl(3) = 1: csny(3) = #10/6/2003#
Open " jmdjb.dat " For Output As #1 ' 建立文件
Write #1, "身份证号", "姓名", "性别", "年龄", "出生年月" ' 写入表头
For i = 1 To 3 '利用循环语句写入多条记录
Write #1, sfzh(i), xm(i), xb(i), nl(i), csny(i) ' 写入第i个记录
Next
Close #1 参考技术A 需要用到VB的FSO文件系统。新建一个FSO对像
Private Sub CmdRead_Click()
Dim fsoTest As New FileSystemObject, file1 As File, ts As TextStream, s As String
Set file1 = fsoTest.GetFile(“C:\testfile.txt")
Set ts = file1.OpenAsTextStream(ForReading)
'读取一行
s = ts.ReadLine
MsgBox s
ts.Close
End Sub
Private Sub CmdWrite_Click()
Dim txtfile As File, ts As TextStream
Set txtfile = fsoTest.GetFile(“c:\testfile.txt")
Set ts = txtfile.OpenAsTextStream(ForWriting)
'使用Write方法写入一行。
ts.Write (“This is only a Test")
' 写入一行带有换行符的文本。
ts.WriteLine (“Testing 1, 2, 3.")
' 向文件中写入三个换行符。
ts.WriteBlankLines (3)
ts.Close
End Sub 参考技术B 如果要运行。可以使用 顺序文件的读取方式,
一行一行的读取 对字符进行操作。
你的文本内容很简单,2组数字中间有空格隔开,可以使用 split函数分割为2个字符,转换为整型,就可以进行运算拉。 参考技术C filename1 = "e:\test.txt"
Open filename1 For Input As #1
Input #1, X1, X2, X3, X4 'x1,x2,x3,x4是用tab隔开的数
Close #1
以上是关于VB的关于文件保存的方式?的主要内容,如果未能解决你的问题,请参考以下文章