当前位置:编程学习 > C#/ASP.NET >>

.net入门之VB篇:Visual Basic.Net中的文件操作(一)

答案:Visual Basic.Net中有三种访问文件系统的方法:第一种是使用 Visual Basic 运行时函数进行文件访问 (VB传统方式直接文件访问);第二种是通过.Net中的System.IO模型访问;第三种是通过文件系统对象模型FSO访问。

文件是存储在某种介质上数据的集合,就其本身来讲,文件只不过是磁盘上的一系列相关的数据字节。当应用程序访问文件时,它必须假定字节是否表示字符、数据记录、整数、字符串等。通过指定文件的访问类型来告诉应用程序假定什么内容。

Visual Basic 提供三种类型的文件访问:

1.顺序,用于在连续的块中读取和写入文本文件。

2.随机,用于读取和写入结构为固定长度记录的文本或二进制文件。

3.二进制,用于读取和写入任意结构的文件。



使用 Visual Basic 运行时函数进行文件访问



VB.Net保留了VB早期的直接文件访问的方式即通过一些相关的函数直接访问操作文件。 下表分别列出了三种直接文件访问类型的所有可用文件访问函数。

函数
顺序
随机
二进制
说明

FileOpen 函数
X
X
X
打开输入或输出文件

FileClose 函数
X
X
X
关闭对用 FileOpen 函数打开的文件

Input 函数
X

X
从打开的顺序文件中读取数据并将数据分配给变量。

InputString 函数
X


返回 String 值

LineInput 函数
X


从打开的顺序文件中读取一行数据并将它赋给 String 变量。

Print、Printline 函数
X


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

Write、WriteLine 函数
X


将数据写入顺序文件。



要对文件进行操作,首先要打开文件,使用FileOpen函数。

示例:以 Output 模式共享方式打开C盘下的readme.txt文件。

FileOpen(1, "c:\readme.txt", OpenMode.Output, OpenShare.Shared)

当操作文件结束后,需要关闭文件防止文件内容的丢失,此外需要重新打开文件时也需要关闭文件,用FileClose函数,关闭刚才打开的文件c:\readme.txt:

FileClose(1);

当以input模式打开顺序文件时,要打开的文件必须已经存在,否则打开出错,以Output或Append模式打开一个不存在的文件时,FileOpen先创建该文件,然后打开。

其他的一些函数:

Dir 函数:返回表示匹配指定模式或文件属性的文件名、目录名或文件夹名的字符串或返回驱动器卷标的字符串。

EOF 函数:当到达以 Random 或顺序 Input 模式打开的文件尾时,返回 Boolean 值 True。

FileCopy 函数:复制文件

FileDateTime 函数:返回指示创建或最后修改文件的日期和时间的 Date 值。



FileLen 函数:返回以字节表示的指定文件长度的 Long 值。

FreeFile 函数:返回一个 Integer 值,表示可由 FileOpen 函数使用的下一个文件号。

GetAttr 函数:返回表示文件、目录或文件夹的属性的 FileAttribute 值。

Loc 函数:返回一个 Long 值,该值指定打开文件中当前的读/写位置。

LOF 函数:返回一个 Long 值,表示用 FileOpen 函数打开的文件的大小(以字节为单位)。

Seek 函数:返回一个 Long 值,指定用 FileOpen 函数打开的文件中的当前读/写位置,或设置用 FileOpen 函数打开的文件中的下一个读/写操作的位置。

SetAttr 函数:设置文件属性信息。

1、顺序文件的操作

从文件中读取字符串

有三个函数可以从顺序文件中读取字符串:Input,InputString和LineInput。

Input函数

从打开的顺序文件中读取数据并将数据分配给变量。

Public Sub Input( FileNumber As Integer, ByRef Value As Object)

其中参数FileNumber为有效文件号;Value为被赋予从文件读取的值的变量,它不能为数组或对象变量。

下面的例子是一个写入和读取文本example.txt的Hello,world!例子,新建一个控制台应用程序,写入下面的代码查看结果。

FileOpen(1, "c:\example.txt", OpenMode.Output)

Write(1, "Hello,")

Write(1, "World!")

FileClose(1)



Dim s As String

FileOpen(1, "c:\example.txt", OpenMode.Input)

Do While Not EOF(1)

Input(1, s)

Console.WriteLine(s)

Loop

FileClose(1)

InputString函数

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

InputString ( ByVal FileNumber As Integer, ByVal CharCount As Integer ) As String

其中参数FileNumber是有效文件号,CharCount是指定要读取的字符个数的有效数值表达式。

与 Input 函数不同,InputString 函数返回它读取的所有字符,包括逗号、回车符、换行符、引号和前导空格等。对于以 Binary 访问模式打开的文件,如果试图在 EOF 返回 True 之前用InputString 函数读取整个文件,则会产生错误。在用 InputString 读取二进制文件时,用 LOF 和 Loc 函数代替 EOF 函数,而在使用 EOF 函数时则使用 FileGet 函数。

示例:

Dim s As String

FileOpen(1, " c:\example.txt ", OpenMode.Binary)

Do While Not EOF(1)

s = InputString(1, 9)

Console.WriteLine(s)

Loop

FileClose(1)

LineInput 函数:

从打开的顺序文件中读取一行数据并将它赋给 String 变量。

Public Function LineInput (ByVal FileNumber As Integer) As String

参数 FileNumber 是有效文件号。

此函数从文件一次读取一个字符,直到遇到回车符(Chr(13))或回车–换行符(Chr(13) + Chr(10))为止。回车–换行序列被跳过而不是附加到字符字符串上。

示例:

Dim s As String

FileOpen(1, " c:\example.txt ", OpenMode.Binary)

Do While Not EOF(1)

s = LineInput(1)

Console.WriteLine(s)

Loop

FileClose(1)



把字符串写入文件

如果要向文件中写入数据,可以用Print/PrintLine函数,如果要写入的数据是字符串或是数值,则可以用Write/WriteLine函数,要写文件,应该先将文件以Output或Append方式打开,然后菜可以使用Print函数或Write函数。

Print/PrintLine函数:将格式化的显示数据写入顺序文件。

Public Sub Print( ByVal FileNumber As Integer, ByVal ParamArray Output() As Object)

Public Sub PrintLine( ByVal FileNumber As Integer, Val ParamArray Output() As Object )

其中参数FileNumber 是有效文件号,Output 是要写入文件的零个或更多个用逗号分隔的表达式。

示例:

FileOpen(1, " c:\example.txt ", OpenMode.Output)

Printline(1)

Printline(1,”Hello,”)

Print(1,spc(4),”World!”)

FileClose(1)

Write/Writeline和print/printline类似



2.随机文件的操作

随机访问文件中的字节构成相同的一些记录,每个记录包含一个或多个字段,对于一个字段的记录对应于任一标准类型,随机访问文件中的所有记录都必须具有相同长度,如果实际字符串包含的字符少于将它写入其中的字符串元素的固定长度,则 Visual Basic 用空白(字符代码 32)填充记录中的尾随空格。如果该字符串长于字段大小,则 Visual Basic 截断它。

示例:用户定义数据类型:

Structure Person

Public ID As Integer

Public MonthlySalary As Decimal

<VBFixedString(15)> Public Name As String

<VBFixedString(2)> Public Sex As String

End Structure

其中VBFixedString用于定义字符串为固定长度的字符串。

在打开一个文件进行随机操作访问前,应该定义一个类型该类型对应该文件已包含或未包含的记录。

打开要进行随机访问的文件:

FileOpen 函数:FileOpen(FileNumber, FileName, OpenMode.Random, , , RecordLength)

FileNumber 和 FileName 分别指定要打开的文件的编号和文件名。RecordLength 以字节为单位指定每条记录的大小。如果 RecordLength 小于写入文件的记录的实际长度,则会生成错误。

示例:打开随机访问的文件。

Dim FileNum as Integer ,RecLength as Long, Aperson as Person

‘计算记录的长度

RecLength=Len(APerson)

‘获得可用的文件号

FileNum=FreeFile()

‘打开文件

FileOpen(FileNum,”c:\example.txt”,OpenMode.random,,,Reclenght)

打开文件之后就可以把记录读入变量中,使用FileGet函数。

示例:从文件中读取第一条记录

Dim FileNum as Integer ,RecLength as Long, Aperson as Person

RecLength=Len(APerson)

FileNum=FreeFile()

FileOpen(FileNum,”c:\example.txt”,OpenMode.random,,,Reclenght)

FileGet(FileNum,Aperson,1);

Console.WriteLine(Aperson.Id)

Console.WriteLine(Aperson.Name)

Console.WriteLine(Aperson.Sex)

Console.Write

上一个:用VB.NET和Excel排生产计划--企业信息化探讨之一
下一个:Henry的VB.NET之旅(十五)—动态事件处理方法

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,