vb使用open方法读写文件
(一)打开和关闭文件

  1、顺序文件

  打开顺序文件,我们可以使用Open语句。它的格式如下:

Open pathname For [Input |Output |Append] As [#]filenumber [Len =
buffersize]

  说明:

  (1)参数pathname
表示要打开的文件名,文件名可以包含有驱动器和目录

  (2)Input Output
和Append用于设置顺序文件的打开方式。其中,Input表示从打开的文件中读取数据。以这种方式打开文件时,文件必须存在,否则会产生错误。
Output表示向打开的文件中写入数据。以这种方式打开文件时,文件中原有的数据将被覆盖,新的数据将从文件开始写入。如果文件不存在,则创建一个新文件。Append表示向打开的文件中添加数据。以这种方式打开时,文件中原有的数据将被保留,新的数据将从文件为开始添加。如果文件不存在,则创建一个新文件。

  (3)As[#]filenumber
子句用于为打开的文件指定文件号.对文件进行读写操作时,要用文件号表示该文件.文件号是介于1~511之间的整数,既可以是数字,又可以是变量.也可以省略不用.

  (4)当在文件与程序之间拷贝数据时,Len=buffersize子句指定缓冲区的字符数.

  例如:

Open App.Path + "/test.dat" For Output As 1

Open App.Path +
"/test.dat" For Output As
1

  这两句代码在当前应用程序所在目录下创建了一个名为test.dat的文本文件,分配文件号为1.

Open App.Path + "/test.dat" For Input As
[#]filenumber

  这条语句是从文本文件中读取数据.

Open App.Path + "/test.dat" For Append As
[#]filenumber

  这条语句则是像文本文件中添加数据

  2、随机文件

  操作随机文件之前,首先必须定义用于保存数据项的记录类型.该记录是用户自定义数据类型,他们是随机文件中存储数据的基本结构.例如:

Type Student
 No As Integer
 Name As String * 20
 age As
Integer
End Type

Dim Stud As Student
‘定义一个可以存放学生材料的变量

  随机文件中,所有的数据都将保存到若干个结构为Student类型的记录中,
而从随机文件中读出的数据则可以存放到变量Stud中.

  之后我们就可以打开并读写文件了.下面是打开随机文件的语法格式:

Open filename For Random as [#]filenumber Len =
Reclength

  说明:

  (1)参数filename 和filenumber
分别表示文件名或文件号.

  (2)关键字Random
表示打开的是随机文件

  (3)Len子句用于设置记录长度,长度由参数Reclength指定.Reclength的值必须大于0,而且必须与定义的记录结构的长度一致.计算记录长度的方法是将记录结构中每个元素的长度相加.例如前面声明的Student的长度应该是2+20+2=24字节.

  打开一个记录类型为Student
的随机文件的方法是:

Open "c:/Student.txt " For Random As #1 Len =
25

  3、二进制文件

  打开二进制文件的语法格式如下:

Open pathname For Binary As
[#]filenumber

  说明:

  (1) 参数filename
和filenumber 分别表示文件名或文件号.

  (2)关键字Binary
表示打开的是二进制文件

  (3)对于二进制文件,不能指定字节长度.每个打开的二进制文件都有一个自己的指针,文件指针是一个数字值,指向下一次读写操作的文件中的位置.二进制文件中的每个”位置”对应一个数据字节,因此,有n个字节的文件,就有1到n个位置.

  我们可以用Seek()函数返回当前的文件指针位置(即下一个要读写的字节
);用Loc()函数返回上一次读写的字节位置,除非用Seek语句移动了指针,Loc()返回值总比Seek()的小1.我们来看下面的例子:

Open “student.txt” for Binary as
#1

  该语句用二进制的方式打开了student.txt文件.

  (二)读文件

  1、顺序文件

  顺序文件的读取有三种方式:

  (1)Line Input
# 语句

  该语句从打开的顺序文件中读取一行数据。这里的一行指的是从当前指针位置开始到回车符或回车换行符之间的所有数据。Line Input #
语句的语法格式如下:

Line Input #
文件号,变量号

  说明:“文件号”是打开文件时所用的文件号;“变量号”使用来存放读出数据的一个或多个变量,如果有多个变量,中间用空格分割开。Input#
语句为参数列表中的每一个变量读取文件的一个域,并将读出的域存入变量中。该语句只能顺序的从第一个域开始,直到读取想要的域。

  请看下面代码:

Dim strLine As String

Open "c:/vb/test.txt" For Input As #1

Do
Until EOF(1)
 Line Input #1, strLine
 text1.Text = text1.Text + strLine +
Chr(13) + Chr(10)
Loop

Close
#1

  此段代码逐行读取一个文件到文本框中。

  (2)Input函数

  此函数可以从顺序文件中一次读取指定长度的字符串。具体地说,就是从文件的当前位置开始,读取指定个数的字符,然后将他们返回。Input函数可以读取包括换行符,回车符,空格符等在内的各种字符。下面是它的语法格式:

  变量
= Input(串长度,文件号)

  例如,要从一个打开文件中读取12个字符并复制到变量file中,我们可以这样写:

file =
Input(12,filenum)

  如果要将整个文件复制到变量,请使用InputB函数将字节从文件复制到变量。由于InputB函数返回一个ASCII字符串,因此,必须用StrCopy函数将ASCII字符串转换为Unicode字符串。代码如下:

file = StrCopy (Input
(LOF(filenanum),filenum),vbUnicode)

  (3)Input #
语句

  Input
#语句可以从文件中同时向多个变量内读入数据,而且读入的数据可以是不同类型的。
 
  下面使它的语法格式:

Input #
文件号,变量列表

  例如,我们要在文件student.txt中写入数据,下面是代码:

Open "student.txt" For Output As #filenum

Write #filenum, "张三",
"初一年级", 14
Write #filenum, "李四", "职业高中", 18

Dim name As String, nianji
As String, age As Integer
Dim name1 As String, nianji1 As String, age1 As
Integer
Open "student.txt" For Input As #filenum
Input #filenum, name,
nianji, age
Input #filenum, name1, nianji1, age1
Close
#filenum

  执行结果:

name=”张三” ,nianji = “初一年级” ,age =14

name=”李四” ,nianji = “职业高中” ,age
=18

  2、随机文件

  读取随机文件是可以使用Get #
语句,数据从文件的一个指定记录中读出后,存入一个用户自定义的变量中.

  语法格式: Get # FileNum
,[RecNum],UserType

  说明:

  (1)FileNum
是要打开的文件号;RecNum是要读取的记录号,若省略,则读取下一个记录

  (2)UserType
是一个用来存放读出数据的用户自定义的数据类型变量.

  下面是一个例子:

Get #
1,5,Student

  该语句读取文件号为1的文件中的第5条记录.

  3、二进制文件

  读写二进制文件的方法和读写随机文件的方法基本相同,下面是相关的语句格式及其说明:

  格式:
Get [#]fileNumber ,[Pos], Var

  功能:
用二进制方式,从文件的中指定的位置开始读取,所给变量长度的数据

  说明:

  (1)FileNumber是以二进制方式打开的文件号.

  (2)Pos用来指定读写操作发生时的字节位置,若省略,则使用当前文件指针位置.

  (3)Var是用来存放读出的数据的变量.该语句会自动根据var变量包含的字节长度读取适当的文件,如果Var是一个可变长度的字符串变量,则传送的字节数等于Var中目前的字节数.对于文件长度的判断我们可以使用Lof()函数,Eof()函数检查文件的结尾位置.

  下面的代码复制studert.txt文件到student1.txt文件中

Dim ar As String * 1, i As Integer
Open "c:/student.txt" For Binary As
#1
Open "c:/student2.txt" For Binary As #2
For i = 1 To LOF(1)
 Get #1,
, ar
 Put #2, , ar
Next i

Close #1,
#2

  (三)写文件

  1、 顺序文件

  写顺序文件我们可以用Write #
和Print #语句向一个已经打开的文件中写入数据.

  下面是他们的格式和说明:

  Print # 的语法格式:

  Print #
文件号,变量列表

  例如,将文本框中的文本写到文件中,代码如下:

Open "file.txt" For Output As #filenum

Input #filenum,
text1.text

  Write # 语句的语法格式:

Write # 文件号,变量列表

  说明:用Write #
语句写入的信息便于以后用Input #语句来读取数据,因为Write #语句自动将写入到文件中的信息用逗号分开,并为字符串数据加上双引号.例如:

Open "student.txt" For Output As #filenum

Write #filenum, "张三",
"初一年级", 14
Write #filenum, "李四", "职业高中", 18

  2、
随机文件

  向随机文件中写入数据,使用Put #语句.语法格式如下:

Put [#] FileNum
,[RecNum],UserType

  说明:

  (1) FileNum
是要打开的文件号;RecNum是要写入的记录号,若省略,则再上一次用Get 和Put语句所读写过的记录的后一条记录中写入,如果没有执行过Get
和Put语句,就从第一条记录开始

  (2)UserType
是包含要写入数据的用户自定义的数据类型变量.例如:我们向前面的student.txt文件中的第5个记录写入数据,可用这些语句:

stud.No = 0301
stud.Name = “王武”
stud.Age =20
Put #1
,5,stud

  如果要插入的数据不只一两条的话,首先要确定文件和每条记录的长度,这样就可以计算出文件中究竟有多少条记录.我们可以用Lof()函数返回文件的长度,Len()函数返回每个记录的长度,计算文件中的记录个数可以用文件的长度除以给个记录的长度.示例如下:

Nextrec= (Lof(1)/Len(UserType))+1

Put
#1,Nextrec,UserType

  3、二进制文件

  下面是以二进制方式写入文件的语句格式及其说明:

  格式:

Put [#]fileNumber ,[Pos], Var

  功能:
用二进制方式,从文件的中指定的位置开始写入,所给变量长度的数据

  说明:

  (1)FileNumber是以二进制方式打开的文件号.

  (2)Pos用来指定写操作发生时的字节位置,若省略,则使用当前文件指针位置.

  (3)Var是用来存放写入的数据的变量.该语句会自动根据var变量包含的字节长度写入文件,如果Var是一个可变长度的字符串变量,则传送的字节数等于Var中目前的字节数

open方法读写文件的更多相关文章

  1. Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...

  2. C#读写文件的方法汇总_C#教程_脚本之家

    C#读写文件的方法汇总_C#教程_脚本之家 http://www.jb51.net/article/34936.htm

  3. JAVA基础学习之流的简述及演示案例、用缓冲区方法buffer读写文件、File类对象的使用、Serializable标记接口(6)

    1.流的简述及演示案例输入流和输出流相对于内存设备而言.将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出.字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表. ...

  4. Java读写文件方法总结

    Java读写文件方法总结 Java的读写文件方法在工作中相信有很多的用处的,本人在之前包括现在都在使用Java的读写文件方法来处理数据方面的输入输出,确实很方便.奈何我的记性实在是叫人着急,很多时候既 ...

  5. [Python]读写文件方法

    http://www.cnblogs.com/lovebread/archive/2009/12/24/1631108.html [Python]读写文件方法 http://www.cnblogs.c ...

  6. 【转】 Linux内核中读写文件数据的方法--不错

    原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法  有时候需要在Linuxkernel--大 ...

  7. nodeJS中读写文件方法的区别

    导言:nodejs中所有与文件相关的操作都在fs模块中,而读写操作又是我们会经常用到的操作,nodejs的fs模块针对读操作为我们提供了readFile,read, createReadStream三 ...

  8. Python 3 读写文件的简单方法!

    Python 3 读写文件的简单方法! a = open('test.txt','w') 这行代码创建了一个名为test的文本文档,模式是写入(模式分为三种,w代表写入,r代表阅读,a代表在尾行添加) ...

  9. 【CodeBase】PHP转换编码,读写文件/网页内容的防乱码方法

    核心代码: //检查字符串的编码 $charset=mb_detect_encoding($doc,['ASCII','GB2312','GBK','BIG5','UTF8'],TRUE); //字符 ...

随机推荐

  1. URAL 1136 Parliament (DFS)

    题意 输入一棵树的后缀表达式(按左-右-中顺序访问),这棵树的每一个结点的数值都比它的左子树结点的数值大,而比它的右子树结点的数值小,要求输出其按右-左-中顺序访问的表达式.所有的数都为正整数,而且不 ...

  2. do-while语句和while的区别

    do-while语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试出口条件.其实就是,代码在刚开始执行的时候,都是要先走一遍do循环体内的代码,然后在与while里面的条件进行判断,成 ...

  3. MongoDB学习(五)使用Java驱动程序3.3操作MongoDB快速入门

    [引言] 毕竟现在MongoDB还是出于成长阶段,所以现在网上相关的资料很少,而且大部分还都是针对于MongoDB的老版本的.再加上MongoDB的频繁升级.重大更新等等,导致菜鸟学习的难度增大. 好 ...

  4. jQuery实现的手机发送验证码倒计时效果代码分享

    这是一款基于jquery实现的手机发送验证码倒计时效果代码,可实现实时显示秒数倒计时的功能,还可实现对手机号码格式验证的功能,是一款常用的网站注册发送手机验证码特效代码. 效果描述:注册一个网站,当需 ...

  5. 【LeetCode 38_字符串_算术运算】Count and Say

    string countAndSay(int n) { string res; ) return res; res = "; ) { int len = res.size(); int i, ...

  6. EM算法及其应用: K-means 与 高斯混合模型

    EM算法及其应用(一) EM算法及其应用(二): K-means 与 高斯混合模型 上一篇阐述了EM算法的主要原理,这一篇来看其两大应用 -- K-means 与 高斯混合模型,主要由EM算法的观点出 ...

  7. Zabbix监控TCP status

    监控原理 ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' LAST-ACK 5ESTAB 348FIN-WAIT-1 ...

  8. swift 分页视图

    var data:NSArray! var scrollView: UIScrollView! var pageCtrl: UIPageControl! override func viewDidLo ...

  9. CMS初步认识

    一CMS本质 [1]基本思想是:分离内容的管理和设计,页面显示的风格和框架存储在模板里.至于页面显示的内容存储在数据库中或一个独立的文件中.当一个用户请求页面时,各部分联合生成一个标准的 HTML 页 ...

  10. 关于SSL的error问题

    今天模拟网页版微信登录的时候又碰到一个SSLError的问题 requests.exceptions.SSLError: [Errno 1] _ssl.c:503: error:14090086:SS ...