トップ回答者
リソースからテキストが読み込めない

質問
-
string[] a = File.ReadAllLines(Properties.Resources.hoge,Encoding.UTF8);
このようにしたところ
+ $exception {"パスに無効な文字が含まれています。"} System.Exception {System.ArgumentException}
とエラーが出てしまいました。
hogeのビルドアクションをコンテンツ・コンパイル・埋め込まれたリソースを試してみましたが同様のエラーでした。
出力ディレクトリにコピーは新しい場合にコピーするにしています。
よろしくお願いします。
回答
-
Properties.Resources.hoge は何型か確認してみませんか?
ビルドが成功することを考えると、string 型ですよね。
そうであれば、File.ReadAllLines なんて使わなくても済むはずなんです。例外が発生して止まったときに、hoge のところにカーソルをホバーさせる、ウォッチペインに hoge の内容を表示させる、ローカルペイン(+$exception が表示されているところ)に hoge が表示されているはずだから中身を確認するといったことで、何が入っているかわかるはずです。
それ以外にも、コードエディタで hoge にカーソルを合わせて F12 を押すなり、右クリックメニューから定義に移動を選ぶなりでどんな定義になっているか、確認することができます。なお、単なる string を改行で区切りたいのであれば、string.Split を使ってください
(File.ReadAllLines はファイルパスを渡してファイルから読み込むためのものであり、リソースを読み込むためのものではありません)
- 編集済み AzuleanMVP, Moderator 2014年4月6日 3:56
- 回答としてマーク 野暮用 2014年4月6日 5:24
すべての返信
-
Properties.Resources.hoge は何型か確認してみませんか?
ビルドが成功することを考えると、string 型ですよね。
そうであれば、File.ReadAllLines なんて使わなくても済むはずなんです。例外が発生して止まったときに、hoge のところにカーソルをホバーさせる、ウォッチペインに hoge の内容を表示させる、ローカルペイン(+$exception が表示されているところ)に hoge が表示されているはずだから中身を確認するといったことで、何が入っているかわかるはずです。
それ以外にも、コードエディタで hoge にカーソルを合わせて F12 を押すなり、右クリックメニューから定義に移動を選ぶなりでどんな定義になっているか、確認することができます。なお、単なる string を改行で区切りたいのであれば、string.Split を使ってください
(File.ReadAllLines はファイルパスを渡してファイルから読み込むためのものであり、リソースを読み込むためのものではありません)
- 編集済み AzuleanMVP, Moderator 2014年4月6日 3:56
- 回答としてマーク 野暮用 2014年4月6日 5:24