Salve a tutti. Sto cercando di modificare un file data binary (o almeno è ciò che penso sia), questo qui per la precisione: http://www.mediafire.com/?da0ad07pzfogdl0 (uso notepadd++ per aprirlo)
Ciò che vorrei fare è modificare le parti testuali all'interno, per esempio: http://img403.imageshack.us/img403/8017/94022290.jpg
Vorrei modificare "CustAssetSeen-803981731[NUL][STX][NUL][NUL][NUL]1" in "CustAssetSeen-803981731[NUL][STX][NUL][NUL][NUL]0"
Utilizzando i FileStream sono riuscito sia a farlo leggere che a scrivere dal mio programma, ma ho ancora un problema. Questo file che sto cercando di modificare è un file di configurazione di un'altra applicazione. Il mio programma riesce a leggerlo senza problemi sia prima che dopo che applico le modifiche, purtroppo l'applicazione "originale" che ha creato il file non lo riconosce dopo che applico le modifiche e lo sovrascrive con un nuovo file.
In poche parole, il programma legge e scrive il file, ma non in modo tale da fallo riconoscere dall'applicazione originale.
Comunque posto qui il codice che uso per leggere e scrive il file (NOTA: è molto "rozzo", poco ottimizzato insomma)
codice:
Dim nul As Char = ChrW(0)
Dim stx As Char = ChrW(2)
Dim ht As Char = ChrW(9)
Dim lf As Char = ChrW(10)
Dim vt As Char = ChrW(11)
Dim ff As Char = ChrW(12)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileStream As New IO.FileStream("C:\test", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
Dim myFileReader As New System.IO.StreamReader(fileStream)
Dim text As String = myFileReader.ReadToEnd
myFileReader.Close()
fileStream.Close()
If text.Contains("CustAssetSeen-803981731" & nul & vt & nul & nul & nul & "1") = True Then
Me.ComboBox1.SelectedIndex = 0
ElseIf text.Contains("CustAssetSeen-803981731" & nul & vt & nul & nul & nul & "0") = True Then
Me.ComboBox1.SelectedIndex = 1
End If
End Sub
codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim fileStream1 As New IO.FileStream("C:\test", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None)
Dim myFileReader As New System.IO.StreamReader(fileStream1)
Dim text As String = myFileReader.ReadToEnd
myFileReader.Close()
fileStream1.Close()
If Me.ComboBox1.SelectedIndex = 0 Then
If text.Contains("CustAssetSeen-803981731" & nul & vt & nul & nul & nul & "0") = True Then
text = text.Replace("CustAssetSeen-803981731" & nul & vt & nul & nul & nul & "0", "CustAssetSeen-803981731" & nul & vt & nul & nul & nul & "1")
MsgBox("Done")
End If
End If
Dim fileStream2 As New IO.FileStream("C:\test", IO.FileMode.Create, IO.FileAccess.Write, IO.FileShare.None)
Dim myFileWriter As New System.IO.StreamWriter(fileStream2)
myFileWriter.Write(text)
myFileWriter.Close()
fileStream2.Close()
MsgBox("Done")
End Sub
Qualche suggerimento?
Grazie per l'attenzione