言,不熟悉公共语言运行时可能会遇到一些困难。如果您是其中一员,您可能更倾向于使用您所熟知的方法。
实现方法
如上所述,许多 .NET 框架类(如 FileIOPermission)对于使用文件和目录进行工作的 Visual Basic 开发人员都十分有用。Imports 语句允许您在不使用完全限定名称的情况下引用命名空间中的类。
代码示例
以下示例使用 StreamReader 类来读取文本文件的内容。
Imports System
Imports System.IO
Function ReadTextFile(ByVal path As String) As String
Dim sr As System.IO.StreamReader
Dim Contents As String
sr = New StreamReader(path)
Contents = sr.ReadToEnd()
sr.Close()
Return Contents
End Function
以下代码与前面的示例顺序相反,它使用与 StreamWriter 类相同的方法来写入文本文件。
Imports System
Imports System.IO
Sub WriteTextFile(ByVal path As String, ByVal value As String)
Dim sr As StreamWriter
Dim Contents As String
sr = New StreamWriter(path)
sr.Write(value)
sr.Close()
End Sub
以下示例演示了如何使用 FileSystemWatcher 类来监视目录的变化。它声明 FileSystemWatcher 类的一个实例,提供要监视的路径,指示要监视的内容,然后创建一个事件处理
程序来监视新文件的创建。
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
Class WatchForNewFiles
Shared Sub Main()
Dim fw As New System.IO.FileSystemWatcher()
'' 要监视的路径。
fw.Path = "C:\"
'' 监视文件。
fw.NotifyFilter = System.IO.NotifyFilters.FileName
fw.IncludeSubdirectories = True
'' 添加事件处理
程序以监视文件创建。
AddHandler fw.Created, _
New System.IO.FileSystemEventHandler(AddressOf OnFileEvent)
fw.EnableRaisingEvents = True
Console.ReadLine()
End Sub
'' 新文件创建时生成的事件。
Shared Sub OnFileEvent(ByVal source As Object, ByVal e As _
System.IO.FileSystemEventArgs)
Console.WriteLine("在 C: 中创建的新文件" & e.FullPath)
End Sub
End Class
以下示例说明了如何使用公共语言运行时类来保存 Visual Basic .NET 类。可以使用 BinaryFormatter 和 BinaryWriter/Binary Reader 类来保存,使用这种方法效率较高,但可读性略差。也可以使用 XMLSerializer 类和 FileStream 类,使用这种方法,移植性较强且易于读取,但效率较低。
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
Public Module Module1
Public Class class1
Public classvar As Integer
End Class
Sub Main()
Try
Dim Result As Object
'' 创建并初始化要保存的类(序列化)。
Dim myclass1 As New class1()
myclass1.classvar = 7
'' 创建序列化程序。
Dim xs As New XmlSerializer(GetType(class1))
'' 创建文件流。
Dim FStream As New IO.FileStream("c:\xyz.txt", _
IO.FileMode.OpenOrCreate)
'' 使用序列化程序编写类。
xs.Serialize(FStream, myclass1)
'' 将文件流的位置重置到开始位置。
Fstream.seek(0, IO.SeekOrigin.Begin)
'' 通过还原序列化到对象中来完成在类中的读取操作。
Result = xs.Deserialize(FStream)
FStream.Close()
'' 将文件流作