Windowsフォームアプリケーションで単純にログファイルをTextBoxに表示したいが0x00(NUL)コードがファイル内にあるとそこまでしか読み込んでくれない。どうしたものか。
これで少々詰まったので備忘として書いておく。
結果的には一旦ファイルをByte配列として開き、NULをスペース(0x20 SPC)に置換、その後文字に変換することで正常に表示できた。
コード:
1 2 3 4 5 6 7 8 9 |
Dim data() As Byte = File.ReadAllBytes("C:\test") For i As Integer = 0 To data.Length - 1 If data(i) = "00" Then data(i) = "20" End If Next TextBox1.Text = System.Text.Encoding.GetEncodeing(932).GetString(data) |
ログファイルはShift_JISを想定、
あとこの方法だとファイルサイズが大きいものは処理が遅そうだが、事は足りたし自分はインフラ屋なので後は知らん(逃げ)