0
在我的VB.NET程序中我必须删除所有在这些之后的字节:48534853
直到它结束(我知道这会破坏文件)。VB.NET删除文件中的特定文件后的所有字节
我该怎么做?我已经写了函数来替换另一个模式,并找到特定的字节,但我不知道如何消除模式后的一切。
在我的VB.NET程序中我必须删除所有在这些之后的字节:48534853
直到它结束(我知道这会破坏文件)。VB.NET删除文件中的特定文件后的所有字节
我该怎么做?我已经写了函数来替换另一个模式,并找到特定的字节,但我不知道如何消除模式后的一切。
使用FileStream.SetLength
方法。
Using stream = New FileStream(path, FileMode.Open, FileAccess.Write)
fileStream.SetLength(newLength)
End Using
-
试试这个:
Dim pattern As Integer() = New Integer() {&H48, &H53, &H48, &H53}
Dim p As Integer = 0 'Position in pattern.
Using fs = New FileStream("path", FileMode.Open, FileAccess.ReadWrite)
For pos As Integer = 0 To fs.Length - 1
Dim b As Integer = fs.ReadByte()
If b = pattern(p) Then
p += 1
If p = pattern.Length Then
fs.SetLength(pos - pattern.Length + 1)
Return
End If
Else
p = 0
End If
Next
End Using
注意fs.ReadByte()
返回字节作为Integer
。
谢谢,但它的大小可以改变,所以我并不总是知道模式的确切偏移量。那么如何确定文件大小直到该模式? – Andrea
你正在说的字节,但显示我们的数字'48534853'。这不是一个字节。它是文本文件中的文本模式吗?因为访问文本文件中的字符与访问字节流非常不同。根据编码的不同,可以使用不同数量的字节来表示一个字符。在确定字节长度时必须考虑这一点。 –
'数字'是十六进制字节:48 53 48 53(在ASCII中是'HSHS')。我必须找到这8个字节,并删除它们后面的所有内容 – Andrea