こんにちは VB6は今まで使っていましたがVB.NET2003は本格的に使い始めて
まだまもない者です
JISコードでかかれているファイルがありまして、
そのファイルの中に固定長の項目があり、内訳として全角文字項目があります。
実際の全角文字の前後にそれぞれには固有の文字コード(制御文字)が
ついています。たとえば以下のような感じです。
(***は制御文字を示していますが、実際のものとは異なります)
***名古屋市 中区 上前津9丁目***777-7777
フィールドに50バイトの領域があってもその中もデータに全角文字が入る
都度、制御文字が入っています。前のコードと後のコードは当然セットで
ついていますが・・・。
これらを外したい(正確にはスペースなどに置き換えたい)のですが、
StreamReaderクラスで読み込ませると制御文字が外れてしまうので
実質可変長になってしまい、その後の処理に影響が出てしまうので、
FileStreamクラスでバイナリで読み込んで文字コードを置き換えようと
しているのですが、適切に書き込まれませんでした。
概ね下記のようなコードでやっています。おかしな点や、
VB.NET2003でほかにいいやり方などがあれば教えてください。
'読込みファイルをオープンする
objREADER = New FileStream("C:\AAA.TXT", FileMode.Open, FileAccess.Read)
objR_BIN = New BinaryReader(objREADER)
'内部バッファを文字列数分拡張する
ReDim intInternal(CInt(objREADER.length) - 1)
objR_BIN.Read(Internal, 0, CInt(objREADER.Length))
strREAD = System.BitConverter.ToString(intInternal)
(ここで編集)
'書き込み
objWRITER = New FileStream("c:\bbb.txt", FileMode.Create)
objW_BIN = New BinaryWriter(objWRITER)
ReDim absInternal(CInt(strREAD.Length) - 1)
bytInternal = System.Text.Encoding.GetEncoding(strCharCode).GetBytes(strREAD)
objW_BIN.Write(bytInternal, 0, CInt(UBound(bytInternal)))
(ここでファイルクローズ)