2015-06-14 41 views
0

在我的VB.NET程序中我必须删除所有在这些之后的字节:48534853直到它结束(我知道这会破坏文件)。VB.NET删除文件中的特定文件后的所有字节

我该怎么做?我已经写了函数来替换另一个模式,并找到特定的字节,但我不知道如何消除模式后的一切。

回答

0

使用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

+0

谢谢,但它的大小可以改变,所以我并不总是知道模式的确切偏移量。那么如何确定文件大小直到该模式? – Andrea

+0

你正在说的字节,但显示我们的数字'48534853'。这不是一个字节。它是文本文件中的文本模式吗?因为访问文本文件中的字符与访问字节流非常不同。根据编码的不同,可以使用不同数量的字节来表示一个字符。在确定字节长度时必须考虑这一点。 –

+0

'数字'是十六进制字节:48 53 48 53(在ASCII中是'HSHS')。我必须找到这8个字节,并删除它们后面的所有内容 – Andrea

相关问题