VB.NET常用

①在Windows 程序中用Environment.UserName得到当前登陆用户名,Web程序用SystemInformation.UserName得到.

.NET访问文件

虽然首选的数据访问是通过一个后台数据库或者XML方式,但你却很少有机会来选择数据访问的方式。一般而言,公司中必然会富于大量遗产数据 (Legacy data),所以你必须能够访问各种不同的数据源。文本文件就是其中一个普通的方式。.NET类中的长数组以System.IO空间名称的方式提供了需要的功能。现在让我们详细查看如何使用这一空间名称来访问文件内容。

流(Streams)

.NET框架使用流来处理各种输入类型。一个流代表着输入或者输出到一个数据源的数据流动,数据源即为一个流的后端(文件,Socket等)。

System.IO空间名称包含抽象的基本Stream类。这一类定义了以字节方式读取或写入原始数据的操作。你无需处理原始数据,但你必须处理建立的存储格式,如文件或者网络Sockets。

System.IO空间名称包括很多类,这些类能够将Stream类扩展为处理各种不同的存储方法。这些类包括以下:

  • Directory:提供了处理与路径有关的方法,比如建立,复制,移动,以及删除。

  • File:提供了处理与文件操作有关的方法,比如建立,建立,移动,以及删除。

  • FileStream:提供了同步和异步的文件操作。

  • MemoryStream:处理内存中存储的数据。

  • StringReader:访问与string有关的数据(使用TextReader类)。

  • StringWriter:建立与string有关的数据(使用TextWriter类)。

  • TextReader:用于读取一个顺序字符。

  • TextWriter:用于写入一个顺序字符。

    以上为System.IO空间名称的例子,你可以看到蕴藏的灵活性。这些类的一个不足之处是,一个流作为前台方式服务于其它一个类,这就有可能在第一个流上执行多余的处理。和文件操作一样,这些方法被应用于加密或者缓冲等处理。

    既然我们已经建立.NET流的基本知识,现在让我们更深入学习使用流来处理数据文件。

    以文本文件方式工作

    System.IO空间名称的File类提供了用于文本文件的必需功能。以下VB.NET源代码范例说明了它很容易使用,这一代码片段为显示位于本地硬盘中一个文本文件的内容:

    Dim sr as StreamReader
    Dim fileContents As String
    sr = File.OpenText("c://test.txt")
    fileContents = sr.ReadToEnd()
    Console.WriteLine(fileContents)
    sr.Close()

    在C#中类似的代码也相当简单:

    StreamReadersr = null;
    String fileContents = null;
    sr = File.OpenText("c://prodinfo.txt");
    fileContents = sr.ReadToEnd();
    Console.WriteLine(fileContents);
    sr.Close();

    关于这一范例,有几个值得注意的地方。首先,你必须包含System.IO空间名称,以保证代码能按计划而运行。同时,StreamReader类被用于作为Flie类的方法的前台。这一代码范例使用StreamReader类的ReadToEnd方法来读取文件的全部内容,除此之外,还包括以下的其它方法来访问文件的内容:

  • ReadLine:在某一时间读取一行。

  • Read:使用固定点和长度来读取文件内容。

  • ReadBlock:将数据读取到缓冲。

  • Peek:读取下一个字符。

    你可以使用ReadLine方法一行一行地读取文件的内容,这样可以改变前一范例的读取方式。以下C#代码实现了这一要求:

    StreamReadersr = null;
    String oneLine = null;
    sr = File.OpenText("c://test.txt");
    oneLine = sr.ReadLine();
    while (oneLine != null) {
    Console.WriteLine(oneLine);
    oneLine = sr.ReadLine();
    }
    sr.Close();

    代码使用while循环在某一时刻一行的方式循环读取整个文件内容。同样,我们还可以利用File类的OpenText方法,但还得包括其它的一些方法,这些方法包括:

  • AppendText:在一个文本文件的后尾添加一个文本。

  • Cope:将一个文件从一个位置复制到另一位置。

  • Create:建立一个用于写入的新文件。

  • Delete:删除一个指定的文件。

  • Exists:验证一个文件是否存在(返回一个Boolean值)。

  • Move:将一个文件从当前位置移动到一个新的位置。

  • Open:打开一个文件。

  • OpenRead:打开一个用于读取的已经存在的文件。

  • OpenWrite:打开一个用于写入的已经存在的文件。

     

    你可以在操作文件之前利用以上的代码并结合Exists方法来验证文件是否存在。以下的VB.NET代码添加了这一方法:

    Dim sr As StreamReader
    Dim oneLine As String
    Dim fileName As String
    fileName = "c://prodinfo.txt"
    Try
    If (File.Exists(fileName)) Then
    sr = File.OpenText(fileName)
    oneLine = sr.ReadLine()
    While Not (oneLine Is Nothing)
    Console.WriteLine(oneLine)
    oneLine = sr.ReadLine()
    End While
    sr.Close()
    End If
    Catch ex As IOException
    Console.WriteLine("Error accessing file. " + ex.Message)
    End Try

    除此之外,以上代码将文件访问封装在一个try块中,以获取可能产生的各种错误。在程序中使用了通用IOException(从System.IO名称空间),但也可以使用了特殊异常,如FileLoadException或者FileNotFoundException。你可以浏览System.IO名称空间以获得有关异常的更多信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值