-1

只是有一些关于 MSDN 上不清楚的 VB 网络功能的非常简单的问题:

  1. 当您使用文件打开功能EG

    fileopen(1,Path of file,openmode.binary) 
    

    ,当一个文本文件是要打开的文件时,openmode.binary 是如何工作的?每个字符都以二进制形式使用吗?

  2. 当你使用fileget函数时;

    fileget(1,variablename) 
    

    ,变量类型是否取决于从文件中读取的内容?因此,如果变量名被声明为 char,fileget 函数是否只是从文件中读取字符?

  3. 文件关闭功能是否用于简单地提高效率?EG 如果不关闭会类似于无限循环吗?

4

2 回答 2

3

NET Framework 有一个名为System.IO的命名空间,其中包含读取和写入文件(文本或二进制文件)的方法

这个取自 MSDN的示例是关于如何使用 VB.NET 读取文本文件的示例

Public Shared Sub Main()
    Try 
        Using sr As New StreamReader("TestFile.txt")
            Dim line As String
            line = sr.ReadToEnd()
            Console.WriteLine(line)
        End Using 
    Catch e As Exception
        Console.WriteLine("The file could not be read:")
        Console.WriteLine(e.Message)
    End Try 
End Sub 

这里 fileopen 函数被StreamReader构造函数替换。fileget 由 StreamReader 的ReadToEnd(or ReadLineor ReadBlock) 方法替换,而文件的关闭由 End Using 指令替换,该指令关闭并销毁由初始 Using 创建的 StreamReader 对象。

我建议阅读 MSDN 上的这篇文章:Common I/O tasks

于 2013-05-25T20:24:03.220 回答
1
  1. 不是,你不应该这样做。如果你有一个文本文件,你应该以文本模式打开它,而不是二进制模式。二进制模式用于读取您以二进制模式写出的文件。

  2. 是的,但您应该根据最初将数据写入文件的方式正确匹配数据类型。如果你弄错了,所有的赌注都会被取消。这里没有什么是自动的。

  3. 不,你关闭文件不是为了提高效率,你关闭它是因为你用完了它。不关闭文件会导致资源泄漏。在您的应用程序关闭之前,该文件不会关闭,然后操作系统会自动释放它。我想您可以认为泄漏资源效率低下,但我认为这不是您的意思。这不像无限循环。该应用程序继续运行,该文件无法被其他任何东西打开或读取,因为您对其进行了锁定。

但就像其他人已经说过的那样,你真的需要放弃这些旧的、过时的功能。他们来自 BASIC 编程语言的最早和最黑暗的日子。你过去不得不这样做,但谢天谢地,我们不再这样做了。它们存在于 VB.NET 中的唯一原因是为了更容易移植旧的 VB 6 应用程序。即使您正在这样做,您的移植工作的一部分也应该涉及切换到System.IO命名空间提供的功能。这不仅仅是为了习惯地道或使用最新和最好的,而是为自己节省大量额外的工作和痛苦。

于 2013-05-26T09:09:24.760 回答