读写文件问题

liuyi3000 2004-01-31 05:32:30
怎样按照每行进行读取或写入
...全文
39 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
goodname008 2004-01-31
Line Input # 语句


从已打开的顺序文件中读出一行并将它分配给 String变量。

语法

Line Input #filenumber, varname

Line Input # 语句的语法具有以下几个部分:

部分 描述
filenumber 必要。任何有效的文件号。
varname 必要。有效的 Variant 或 String 变量名。


说明

通常用 Print # 将 Line Input # 语句读出的数据从文件中写出来。

Line Input # 语句一次只从文件中读出一个字符,直到遇到回车符 (Chr(13)) 或回车–换行符 (Chr(13) + Chr(10)) 为止。回车–换行符将被跳过,而不会被附加到字符串上。
回复
goodname008 2004-01-31
Input 函数


返回 String,它包含以 Input 或 Binary 方式打开的文件中的字符。

语法

Input(number, [#]filenumber)

Input 函数的语法具有以下几个部分:

部分 描述
number 必要。任何有效的数值表达式,指定要返回的字符个数。
filenumber 必要。任何有效的文件号。


说明

通常用 Print # 或 Put 将 Input 函数读出的数据写入文件。Input 函数只用于以 Input 或 Binary 方式打开的文件。

与 Input # 语句不同,Input 函数返回它所读出的所有字符,包括逗号、回车符、空白列、换行符、引号和前导空格等。

对于 Binary 访问类型打开的文件,如果试图用 Input 函数读出整个文件,则会在 EOF 返回 True 时产生错误。在用 Input 读出二进制文件时,要用 LOF 和 Loc 函数代替 EOF 函数,而在使用 EOF 函数时要配合以 Get 函数。

注意 对于文本文件中包含的字节数据要使用 InputB 函数。对于 InputB 来说,number 指定的是要返回的字节个数,而不是要返回的字符个数。
回复
goodname008 2004-01-31
Input # 语句


从已打开的顺序文件中读出数据并将数据指定给变量。

语法

Input #filenumber, varlist

Input # 语句的语法具有以下几个部分:

部分 描述
filenumber 必要。任何有效的文件号。
varlist 必要。用逗号分界的变量列表,将文件中读出的值分配给这些变量;这些变量不可能是一个数组或对象变量。但是,可以使用变量描述数组元素或用户定义类型的元素。


说明

通常用 Write # 将 Input # 语句读出的数据写入文件。该语句只能用于以 Input 或 Binary 方式打开的文件。

在读出数据时不经修改就可直接将标准的字符串或数值数据指定给变量。下表说明如何处理其它输入数据:

数据 指定给变量的值
分隔逗号或空白行 Empty
#NULL# Null
#TRUE# or #FALSE# True 或 False
#yyyy-mm-dd hh:mm:ss# 用表达式表示的日期与/或时间
#ERROR errornumber# errornumber(此变量是一个 Variant,用来标记错误)


输入数据中的双引号符号 (" ") 将被忽略。

文件中数据项目的顺序必须与 varlist 中变量的顺序相同,而且与相同数据类型的变量匹配。如果变量为数值类型而数据不是数值类型,则指定变量的值为零。

在输入数据项目时,如果已到达文件结尾,则会终止输入,并产生一个错误。

注意 为了能够用 Input # 语句将文件的数据正确读入到变量中,在将数据写入文件时,要使用 Write # 语句而不使用 Print # 语句。使用 Write # 语句可以确保将各个单独的数据域正确分隔开。
回复
goodname008 2004-01-31

Write # 语句


将数据写入顺序文件。

语法

Write #filenumber, [outputlist]

Write # 语句的语法具有以下几个部分:

部分 描述
filenumber 必要。任何有效的文件号。
outputlist 可选。要写入文件的数值表达式或字符串表达式,用一个或多个逗号将这些表达式分界。


说明

通常用 Input # 从文件读出 Write # 写入的数据。

如果省略 outputlist,并在 filenumber 之后加上一个逗号,则会将一个空白行打印到文件中。多个表达式之间可用空白、分号或逗号隔开。空白和分号等效。

用 Write # 将数据写入文件时将遵循几个通用的约定,使得无论什么国别都可用 Input # 读出并正确解释数据:

在写入数值数据时总使用句号作为十进制分隔符。


对于 Boolean 类型的数据,或者打印 #TRUE# 或者打印 #FALSE#。无论在什么地区,都不将 True 和 False 这两个关键字翻译出来。


使用通用的日期格式将 Date 类型的数据写入文件中。当日期或时间的部件丢失或为零时,只将现有部分写入文件中。


如果 outputlist 的数据为 Empty,则不将任何数据写入文件。但对 Null 数据,则要写入 #NULL#。


如果 outputlist 数据为 Null 数据,则将 #NULL# 写入文件中。


对于 Error 类型的数据,输出看起来与 #ERROR errorcode# 一样。无论在什么地区,都不将关键字 Error 翻译出来。
与 Print # 语句不同,当要将数据写入文件时,Write # 语句会在项目和用来标记字符串的引号之间插入逗号。没有必要在列表中键入明确的分界符。Write # 语句在将 outputlist 中的最后一个字符写入文件后会插入一个新行字符,即回车换行符,(Chr(13) + Chr(10))。
回复
goodname008 2004-01-31
Print # 语句


将格式化显示的数据写入顺序文件中。

语法

Print #filenumber, [outputlist]

Print # 语句的语法具有以下几个部分:

部分 描述
filenumber 必要。任何有效的文件号。
outputlist 可选。表达式或是要打印的表达式列表。


设置

outputlist 参数的设置如下:

[{Spc(n) | Tab[(n)]}] [expression] [charpos]

设置 描述
Spc(n) 用来在输出数据中插入空白字符,而 n 指的是要插入的空白字符数。
Tab(n) 用来将插入点定位在某一绝对列号上,这里,n 是列号。使用无参数的 Tab 将插入点定位在下一个打印区的起始位置。
expression 要打印的数值表达式或字符串表达式。
charpos 指定下一个字符的插入点。使用分号将插入点定位在上一个显示字符之后。用 Tab(n) 将插入点定位在某一绝对的列号上,用无参数的 Tab 将插入点定位在下一个打印区的起始处。如果省略 charpos,则在下一行打印下一个字符。


说明

通常用 Line Input # 或 Input 读出 Print # 在文件中写入的数据。

如果省略参数 outputlist,而且,filenumber 之后只含有一个列表分隔符,则将一空白行打印到文件中。多个表达式之间可用一个空白或一个分号隔开。空白与分号等效。

对于 Boolean 类型的数据,打印的是 True 或 False。无论在什么国别,都不将 True 和 False 这两个关键字翻译出来。

使用操作系统所能够辨认的标准短日期格式可将 Date 类型的数据写入文件中。在未指定日期或时间部件或这些部件的设置为零时,只将指定的部分写入文件中。

如果 outputlist 的数据是 Empty,则不将任何数据写入文件。但是,如果 outputlist 的数据是 Null,则将 Null 写入文件。

对于 Error 类型的数据而言,输出的数据看起来与 Error errorcode 一样。而且无论在什么地区,都不将 Error 关键字翻译出来。

用 Print # 写入文件的所有数据都是国际通用的;也就是说,可以正确利用十进制分隔符将这些数据格式化。

因为 Print # 将数据的图像写入文件,所以必须将各项数据分隔开来,以便正确打印。如果使用无参数的 Tab 将打印位置移动到下一个打印区,则 Print # 也会将打印字段之间的空白写入文件中。

注意 如果今后想用 Input # 语句读出文件的数据,就要用 Write # 语句而不用 Print # 语句将数据写入文件。因为在使用 Write # 时,将数据域分界就可确保每个数据域的完整性,因此可用 Input # 再将数据读出来。使用 Write # 还能确保任何地区的数据都被正确读出。
回复
goodname008 2004-01-31
Open 语句


能够对文件输入/输出 (I/O)。

语法

Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]

Open 语句的语法具有以下几个部分:

部分 描述
pathname 必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。
mode 必要。关键字,指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。
access 可选。关键字,说明打开的文件可以进行的操作,有 Read、Write、或 Read Write 操作。
lock 可选。关键字,说明限定于其它进程打开的文件的操作,有 Shared、Lock Read、Lock Write、和 Lock Read Write 操作。
filenumber 必要。一个有效的文件号,范围在 1 到 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。
reclength 可选。小于或等于 32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。


说明

对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。

如果 pathname 指定的文件不存在,那么,在用 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。

如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open 操作失败,而且会有错误发生。

如果 mode 是 Binary 方式,则 Len 子句会被忽略掉。

重要 在 Binary、Input 和 Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append 和 Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。
回复
华芸智森 2004-01-31
'
'读TEXT文件
'函数:RedTextFile
'参数:FileName 打开的TXT文件名.
'返回值:成功 返回文件内容.失败 返回""
Public Function RedTextFile(Filename As String) As String
Dim FileID As Long
Dim InputStr As String
Dim LineStr As String

On Error Resume Next

InputStr = "": LineStr = ""
FileID = FreeFile()
Open Filename For Input As #FileID
Do While Not EOF(FileID) ' 循环至文件尾。
LineStr = ""
Line Input #FileID, LineStr
InputStr = InputStr & LineStr
Loop
Close #FileID
RedTextFile = IIf(Err.Number = 0, InputStr, "")
Err.Clear
End Function

'
'写TEXT文件
'函数:WritTextFile
'参数:FileName 目标文件名.WritStr 写到目标的字符串.
'返回值:成功 返回文件内容.失败 返回""
'注:如果同名,目标字符串将覆盖原文件内容.
Public Function WritTextFile(Filename As String, WritStr As String) As Boolean
'/保存文件
Dim FileID As Long, ConTents As String
Dim A As Long, B As Long

On Error Resume Next

FileID = FreeFile
Open Filename For Output As #FileID
Print #FileID, WritStr
Close #FileID
WritTextFile = (Err.Number = 0)
Err.Clear
End Function
回复
发帖
VB基础类
创建于2007-09-28

7476

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2004-01-31 05:32
社区公告
暂无公告