• 締切済み

【C#】パス名で無効な文字

いつも教えて!gooにお世話になってます。 C#に関して質問です。 VisualC#2008を使用しています。 csvファイルを読み込むプログラムを作成しているところですが、つまづいています。 ボタンを押すとcsvファイルが読み込めるようにしたいのですが、 「パス名に無効な文字が含まれています」と表示され、強制終了してしまいます。 以下のようにパス名を指定しているのですが、何か無効な文字が含まれているのでしょうか? お手数ですが誰かご回答よろしくお願いします。 StreamReader sr = new StreamReader("C:\\Documents and Settings\admin\\My Documents\\Visual Studio 2008\algorithm\algorithm\algorithm\readfile\\shortfile.csv",Encoding.Default);

みんなの回答

回答No.2

パスを書く場合は,逐語的リテラル文字列を使うと便利です。 var sr = new StreamReader(@"C:\Documents and Settings\admin\My Documents\Visual Studio 2008\algorithm\algorithm\algorithm\readfile\shortfile.csv", false, Encoding.Default); 標準リテラル文字列を使うと,ANo.1さんが指摘されている通り,\がエスケープ文字列の始まりと見なされてしまう為です。

kiyo061
質問者

お礼

\が1つのところを\\にすることで実行できました♪ ご指導ありがとうございました!!

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.1

"\"が一つの所と二つの所がありますね。 二つにしてみてください。

kiyo061
質問者

お礼

実行できました!! アドバイスありがとうございました!

関連するQ&A

  • ドライブレターとは?パスの文字数とは?

    C:\Documents and Settings\user\My Documents\Excel\file.xls というファイル名があった場合、 ドライブレターというのは「C:」のことでしょうか? また、このパスの文字列を数える場合、 「C:」は抜いて数えるのでしょうか? 「\」も一文字として数えるのでしょうか? どうも初心者ですみませんがどなたか教えてください。

  • フォルダ名とパス名の違うフォルダの作り方

     例えば、C:\Documents and Settings\<ユーザー名>\My Documents\My Pictures の場合、一番最後のサブフォルダ名が、[My Pictures] とパス名と同様に適用されます。  これを上記の場合、[マイ ピクチャ] になります。  こんな感じに、フォルダ名とパス名の違うフォルダの作り方を教えて下さい。

  • 【C#】StreamReaderクラスのエンコード

    こんばんは。 .NetFramework1.1のStreamReaderクラスを使用して、csvファイルを読み込んでいるのですが、 エンコードでShift_JISを指定しても、"€"などの環境依存文字がそのまま取得されてしまいます。 Shift_JISに存在しない文字は文字化けして取得されるものだと思っていましたが、違うのでしょうか? DBの文字コードがShift_JISなのでこのままDBへ渡すとエラーになってしまい困っています。 ご教授下さい。宜しくお願いします。 -- ソース ---------------------------------------------- StreamReader sr = new StreamReader(path,Encoding.GetEncoding("Shift_JIS")); string str = sr.ReadLine();

  • 無効なパスが含まれています、とのエラーがでます

    web上の学習教材を利用しようとしているのですが、 授業をみようとすると音がでなくて、画面も動きません。 ウィンドウを閉じると「C:\Documents and Settings ・・・・\eStream Presto 3 Viewer Utilty\には 無効なパスが含まれています」とのエラーメッセージが でます。 もし、問題を解決する方法をご存知でしたら教えてください。 よろしくお願いいたします。 ※視聴にはFlash Player、MediaPlayer8以上が必要、とのことで、 それぞれインストールしています。

  • 結合した文字列をファイル名に使えない

    Excel上に入力されているパス名とファイル名のデータを組み合わせて、 様々なファイルを開いたりコピーしたりするVBAのコードを作ろうとしています。 仮にシート上のA1セルに、C:\Documents and Settings\デスクトップ というパス名 A2セルに URIAGE.xls というファイル名が入力されていたとして、 A1の文字列データとB1の文字列データを結合する場合、 Sub FileSousa()  Dim a As String  Dim b As String  Dim c As String  a = Cells(1, "A").Value  b = Cells(2, "A").Value  c = Chr(34) & a & "\" & b & Chr(34)  Range("A3") = c としてみると、確かにA3セルには、"C:\Documents and Settings\デスクトップ\URIAGE.xls" と出力され、文字列が結合されたことがわかるのですが、その変数cのデータを使って  Workbooks.Open Filename:=c として、そのファイルを開こうとすると、ファイル名が見つからないとしてエラーになります。 ファイルはデスクトップ上の確かにその名前で存在しており、直接 Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\URIAGE.xls" とすると開きます。 " を Chr(34)によって入力したのがいけないのでしょうか、 Workbooks.Open Filename:=××× には、変数を置いてはいけないのでしょうか。 そもそも文字列の結合は、"あ" & "い" → "あい" となるのが基本だと思うのですが、 a="あ"、b="い"、c=a&b → c="あい"として結合した変数cについては、ファイル操作上のファイル名の設定項目として使えないのでしょうか。

  • ファイル読み取り(C#)

    C#でテキストファイルを開くとき System.IO.StreamReader dates = newSystem.IO.StreamReader("dates.txt"); としてもファイルが見つからなくてエラーが出るんですが、どうしてでしょう? ファイル名をフルパス名にしても同じです。

  • アプリケーションのあるファイル名を取得

    VBプログラミングをしているのですが、 その本体がある場所のファイル名を取得したいのですが、なにかよい方法はあるでしょうか? たとえば 本体.exeまでのフルパスが C:\Documents and Settings\Administrator\My Documents\ファイルA\本体.exe としたら C:\Documents and Settings\Administrator\My Documents\ファイルA までを取得したいのです。 世ろ紙お願いいたします。

  • デスクトップ上のファイルへのパスを教えてください。

    デスクトップ上にあるファイルへのパスはWindows XPとWindows 7の場合は以下のようになっていますが、Windows 8の場合はどのようになるのでしょうか。Windows 7と同様と考えてよろしいでしょうか。 ○Windows XP C:\Documents and Settings\ユーザー名\デスクトップ\ファイル名.拡張子 ○Windows 7 C:\Users\ユーザー名\Desktop\ファイル名.拡張子

  • temp内ファイルを削除するプログラムを組みたい

    windows内のTEMPフォルダ内にあるファイルならばパスがわかっているので指定すれば削除プログラムを組めます。 が、profileのtemp内やcookies内のファイルになるとprofile名によるのですんなりとは無理です。 VB、C等(Exeファイル)では会社がOK出さないので、batファイルかvbsファイル(混合OK)で組みたいです。 profileですが、10桁の社員コードで出来ています。 例:社長=0000000001。専務=0000000002。 C:\Documents and Settings\0000000001\Cookies C:\Documents and Settings\0000000001\Local Settings\Temp profileがどんな数値(管理者はadminなのでadmin内も消したい)でもCooliesとtemp内ファイルを消したいです。 どのように組めばできますでしょうか? お知恵をお貸しください。

  • windows2000でDocument and setting フォルダがの中身がユーザー名と不一致

    windows2000 sp2 を使っています。 先週、Windows2000をAdministrator権限があるユーザ(仮に、”admin_user” とする)で起動時にログインしたところ デスクトップやMyDocumentの中身が空っぽになっていました。 データがすべて消えたのかと思ったのですが。 c:\document and settings\admin_user の中には前回の起動までに保存したデータがすべてありました。 しかし、デスクトップには何もでません。 さらに、よくみてみると c:\document and settings\admin_user.MACHINE (→最後に.MACHINE というのが付け加えられたフォルダを発見) というフォルダができていて、どうやら、起動したあとはc:\document and settings\admin_user.MACHINE というフォルダの設定を読み込んでいるようです。 これでは困るので、別のAdministrator権限でログインしなおし c:\document and settings\admin_user.MACHINE のフォルダを削除したあと、admin_user でログインしたのですがやはり、c:\document and settings\admin_user.MACHINE のフォルダが勝手につくられてしまい、どうにもなりません。 困ったので、c:\document and settings\admin_user(→本来の設定が入っているフォルダ)をc:\document and settings\admin_user.MACHINE という名前に変更して起動すると、設定やデスクトップ、マイドキュメントなどはもどったのですが、LHASAなどの解凍ソフトでファイルを解凍したときに、c:\document and settings\admin_user のディレクトリにでてきてしまい。非常に使用困難な状態となっています。 原因や復旧方法がわかりません。 回答お願いします。