読者です 読者をやめる 読者になる 読者になる

がりらぼ

WindowsRuntimeの応援ブログ

WinRT:Shift-JISのファイルを読み書きするには

WindowsRuntimeでファイルの読み書きをするにはFileIOのReadTextAsyncとか使いますがFileIOはUnicodeエンコードしか対応していません。

Shift-JISのファイルを読み書きするには一旦バイトデータとして読み込んで、エンコードする必要があります。

読み込む場合はこんな感じ

var buff =await FileIO.ReadBufferAsync(file);
DataReader reader = DataReader.FromBuffer(buff);
byte[] dataBuff=new byte[buff.Length];
reader.ReadBytes(dataBuff);
string dataStr = Encoding.GetEncoding("Shift-JIS").GetString(dataBuff,0,dataBuff.Length);

書き込む場合はこんな感じ

byte[] buff = Encoding.GetEncoding("Shift-JIS").GetBytes(text);
await FileIO.WriteBytesAsync(file,buff);

Excelで作成されたCSVとか読み込むときに便利