1

在搜索并尝试找到 2 天的解决方案后,我最终决定在这里发帖寻求帮助...

我有一个读取和写入文件字节的代码(如十六进制编辑器),从这里取得的效果非常好:http ://www.novahq.net/forum/showthread.php?t= 42592 代码如下:

Public Class Form1
    Private Shared Function HexStringToByteArray(ByRef strInput As String)
As Byte()
        Dim length As Integer
        Dim bOutput As Byte()
        Dim c(1) As Integer
        length = strInput.Length / 2
        ReDim bOutput(length - 1)
        For i As Integer = 0 To (length - 1)
            For j As Integer = 0 To 1
                c(j) = Asc(strInput.Chars(i * 2 + j))
                If ((c(j) >= Asc("0")) And (c(j) <= Asc("9"))) Then
                    c(j) = c(j) - Asc("0")
                ElseIf ((c(j) >= Asc("A")) And (c(j) <= Asc("F"))) Then
                    c(j) = c(j) - Asc("A") + &HA
                ElseIf ((c(j) >= Asc("a")) And (c(j) <= Asc("f"))) Then
                    c(j) = c(j) - Asc("a") + &HA
                End If
            Next j
            bOutput(i) = (c(0) * &H10 + c(1))
        Next i
        Return (bOutput)
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
        Dim myFile As String = "..\..\Test.jpg"
        Dim myBytes As Byte() =
My.Computer.FileSystem.ReadAllBytes(myFile)
        Dim txtTemp As New System.Text.StringBuilder()
        For Each myByte As Byte In myBytes
            txtTemp.Append(myByte.ToString("X2"))
        Next
        RichTextBox1.Text = txtTemp.ToString()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
        Dim myFile As String = "..\..\Test2.jpg"
        Dim myBytes As Byte() = HexStringToByteArray(RichTextBox1.Text)
        My.Computer.FileSystem.WriteAllBytes(myFile, myBytes, False)
    End Sub
End Class

这很好用,但仅适用于中小型文件。如果我尝试加载 512MB 或更大的文件,我将收到“System.OutOfMemoryException”错误。

我知道为了完成这项工作(读取更大的文件而不会出错)我必须读取小块文件(或任何你想命名的块),或者我想可能逐字节读取它......

唯一的问题是我找不到办法。我确实找到了一些代码,但由于某种原因我无法使这些代码工作:(

如果有人可以推动我这样做,我很感激。

...但是,我在想,也许我不需要读取整个文件,因为我只需要在文件末尾添加一些字节,然后再次删除它们。

我将尝试解释我需要什么:

我只需要504B0506000000000000000000000000000000000000在 zip 的末尾添加这个“”字节,然后就可以盲/隐藏 zip 的内容,然后我需要再次读取并删除这些字节。

a) 将字节追加到文件末尾

b) 再次删除这些字节

这听起来很简单,但是从我发现的所有代码和示例中,我无法使它们适应我的代码。

谢谢

4

0 回答 0