あまーり意味の無い整形ですが、shift_jisのテキストファイルを、Unicodeのテキスト
ファイルに変換するプログラムを作ってみましょう。
ちなみに今回の課題ですので、答えは書きません。
最低限、以下の機能を盛り込んでください。
入力と、出力のファイル名を入力できるように
バイナリファイルは考慮しなくて良い
入出力のファイル名が無記入であったり、ミスがあったりした場合はエラーを表示
テキストファイルは複数行もサポート
以上。
がんばって下さい……ではあんまりなので、恒例のヒント。
EncodingのUnicodeプロパティを使用します。
なので、Encoding.Unicodeですね。
ファイルストリームが、終端まで行ったかを調べます。
方法は二通り。
ReadLineは終端まで行くとnullを返すので、ReadLineを実行して読み込んだ文字列が
nullかを調べれば、終端まで読み込んだことを確認できます。
nullってのは参照を行わない
例
最後まで読み込んだかの確認
text = sr.ReadLine();
if( text == null )
{
}
とか
if( ( text = sr.ReadLine() ) == null )
{
}
とかですかねぇ。
もう一つは、ReadStreamにはそのなの通りEndOfStreamというプロパティがあります。
これがtrueだと、ストリームが終端まで行ったという事になります。
text = sr.ReadLine();
if( sr.EndOfStream )
{
}
というような感じでしょうかね。
ちなみにこれ、Framework 2.0で追加されたプロパティだそうで。
どちらの方法を使用するにせよ、複数回繰り返すにはループ文(for,while)を使う必要
があります。
もうちょっとヒントを書くと、whileの継続条件は条件がtrueだった場合です。
なんで、たとえば普通にwhile( sr.EndOfStream )とかかくと、ストリームが終端であ
る間繰り返す、なんていう処理になってしまいますので注意。
Fileクラスの、Existsメソッドを使用します。
ファイルが存在する場合はtrue、それ以外はfalseを返します。
パスの指定が間違っている場合もfalseを返しますから、エラーチェックも行えます。
例
hoge.txtが存在するかを確認。
if( File.Exists("hoge.txt") )
{
}
最終更新:2007年10月23日 12:48