バイナリファイルの読み込みで位置がずれる

バイナリファイルというんでしょうか。
10年以上前のソフトを使っているところのファイルをコンバートしたいというような話がよくあります。
固定長のデータのファイルを順番に読んでいけばよいのですが、変なデータが混ざっていたりすると、読み込むときに位置がずれてしまったりします。
位置がずれたら、固定長の意味がないです。
実際には位置がずれるというよりは、終端文字が無かったりするせいで、VB.NETのEncoding.GetStringがうまく動作しないということのようです。
例えば、200バイト目から10バイトとかいって読み込むと、その200バイトの中に2バイトの文字列の中途半端というか終端文字がないような部分があったりすると、VB.NETで読み込むときに、1バイトずれてしまったりします。
それを回避するためには、一旦、NotepadやTeraPadなどで、ファイルを開いて上書きします。
ただし、TeraPadで開くときに、
「Null文字を含むファイルです。Null文字は半角スペースに変換されました。...」
というメッセージが出る場合は、&H0 が &H32 になるので、その点、注意が必要です。
位置がずれるという点が解消されるので、取り扱いがだいぶ楽になります。
MS-DOSのファイルなのかよくわかりませんが、意味不明なデータがところどころに入っているのに、よくちゃんど動作するなと思います。
多分、以前はデータベースのデータが壊れやすかったのではないかと思います。
posted by VB.NET+MSDE+ActiveReports at 18:43 | Comment(0) | TrackBack(0) | VB.NET
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのTrackBack URL
http://blog.sakura.ne.jp/tb/28057617