none
リソースからテキストが読み込めない RRS feed

  • 質問

  • string[] a = File.ReadAllLines(Properties.Resources.hoge,Encoding.UTF8);

    このようにしたところ

    +  $exception {"パスに無効な文字が含まれています。"} System.Exception {System.ArgumentException}

    とエラーが出てしまいました。

    hogeのビルドアクションをコンテンツ・コンパイル・埋め込まれたリソースを試してみましたが同様のエラーでした。

    出力ディレクトリにコピーは新しい場合にコピーするにしています。

    よろしくお願いします。

    2014年4月6日 3:33

回答

  • Properties.Resources.hoge は何型か確認してみませんか?

    ビルドが成功することを考えると、string 型ですよね。
    そうであれば、File.ReadAllLines なんて使わなくても済むはずなんです。

    例外が発生して止まったときに、hoge のところにカーソルをホバーさせる、ウォッチペインに hoge の内容を表示させる、ローカルペイン(+$exception が表示されているところ)に hoge が表示されているはずだから中身を確認するといったことで、何が入っているかわかるはずです。
    それ以外にも、コードエディタで hoge にカーソルを合わせて F12 を押すなり、右クリックメニューから定義に移動を選ぶなりでどんな定義になっているか、確認することができます。

    なお、単なる string を改行で区切りたいのであれば、string.Split を使ってください
    (File.ReadAllLines はファイルパスを渡してファイルから読み込むためのものであり、リソースを読み込むためのものではありません)

    2014年4月6日 3:55
    モデレータ

すべての返信

  • Properties.Resources.hoge は何型か確認してみませんか?

    ビルドが成功することを考えると、string 型ですよね。
    そうであれば、File.ReadAllLines なんて使わなくても済むはずなんです。

    例外が発生して止まったときに、hoge のところにカーソルをホバーさせる、ウォッチペインに hoge の内容を表示させる、ローカルペイン(+$exception が表示されているところ)に hoge が表示されているはずだから中身を確認するといったことで、何が入っているかわかるはずです。
    それ以外にも、コードエディタで hoge にカーソルを合わせて F12 を押すなり、右クリックメニューから定義に移動を選ぶなりでどんな定義になっているか、確認することができます。

    なお、単なる string を改行で区切りたいのであれば、string.Split を使ってください
    (File.ReadAllLines はファイルパスを渡してファイルから読み込むためのものであり、リソースを読み込むためのものではありません)

    2014年4月6日 3:55
    モデレータ
  • そういうことでしたか。ありがとうございます。
    2014年4月6日 5:24