2015-06-14 43 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

相關問題