首页 > 解决方案 > vb.net 如何在不使用内存的情况下读取非常大文件的一小部分?

问题描述

我使用控制台应用程序来处理大文件。我用

IO.File.ReadAllBytes(OpenFileDlg.FileName)

但它会将所有大文件加载到内存中,并在内存已满时停止,而不是完全读取它。我想拆分大文件或读取其中的一部分,“无需将所有文件加载到内存中,因此它可以在小 RAM 上工作”

标签: vb.netfilememory

解决方案


用于FileStream读取 4096 字节的块,然后对其进行加密(或进行任何必要的处理),然后将它们写入新的文件流,因为它正在流入/流出,它不会占用所有试图读取/写入所有内容的内存一次,简单的例子:

Dim bytesRead As Integer
Dim buffer(4096) As Byte 'Default buffer size is 4096
Using inFile As New IO.FileStream("C:\\Temp\\inFile.bin", FileMode.Open)
    Using outFile As New IO.FileStream("C:\\Temp\\outFile.bin", FileMode.Append, FileAccess.Write)
        Do
            bytesRead = inFile.Read(buffer, 0, buffer.Length)
            If bytesRead > 0 Then
                ' Do encryption or any necessary processing of the bytes
                outFile.Write(buffer, 0, bytesRead)
            End If
        Loop While bytesRead > 0
    End Using
End Using

推荐阅读