【问题标题】:Creating a byte array using the long datatype?使用 long 数据类型创建字节数组?
【发布时间】:2010-10-23 14:47:40
【问题描述】:

大多数时候,当我们将文件流读入字节数组时,我们会编写如下代码:-

 Dim inputStream As New System.IO.FileStream(filePath, IO.FileMode.Open)
 Dim fileLength As Integer= CType(inputStream.Length, Integer)
 Dim input(fileLength) As Byte

 Using inputStream
     inputStream.Read(input, 0, fileLength)
 End Using

但是这里我们必须将 Length 转换为整数类型(上面代码的第 2 行),因为我们不能使用 long 数据类型(带有选项 strict)声明字节数组。这是一个好习惯吗?解决这个问题的方法是什么?

【问题讨论】:

    标签: vb.net arrays initialization


    【解决方案1】:

    好的做法是使用File.ReadAllBytes 而不是整个东西:

    Dim input = File.ReadAllBytes(filePath)
    

    顺便说一句,如果您的文件要那么大(超过 4 GB),您不会希望一次将其全部加载到字节数组中,因为它会占用最多 4GB RAM(在 32 位托管进程中,您根本无法拥有它,即使您有更多 RAM)。

    【讨论】:

    • 我认为你的意思是 File.Read 不是 ReadAllBytes ;)
    • @Deviant:不,没有File.Read 方法。实际上,OP中的整个代码sn-p都可以替换为bytes = File.ReadAllBytes(path)。答案的第二段以“顺便说一句”开头,是一个单独的实体;)
    • 我假设因为他已经闯入了 Stream.Read() 使用 longs 的领域 // 这就是我对 File.Read 的意思......我认为他遇到了麻烦大文件......所以你的反应对我来说似乎倒退了:/
    • 我的意思是你不应该考虑一下子把大文件加载到内存中。如果您正在编写该 sn-p 代码,则应将其替换为一行。
    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2015-09-20
    相关资源
    最近更新 更多