StreamReader
C#でオブジェクトを開くのに問題があります。私はいつも例外を受け取りますIllegal characters in path
。それを機能させる唯一の方法は、ファイルパス内の文字を@
エスケープしないように、シンボルを使用してパス名全体を使用する場合です。\
ただし、別のメソッド(変更できない)からの出力として、ファイルのパスとファイルの名前の2つの別々の変数から始めるため、これは実際には役に立ちません。
私はすべて失敗した8つの順列を経験しましたが、参考のために以下にコメントアウトされています。ここで読みやすくするために、別のメソッドからの出力としてそれらの値を受け取る代わりに、私が宣言dirIni
しているふりをします。fileIni
そうは言っても、宣言スタイル1と2の両方が、4つの連結メソッドすべてを使用して失敗しました。ここで何が起こっているのですか?他の例では、4つの連結メソッドすべてが機能するのを見てきました。
編集: コードを簡略化して、壊れたものの1つのバージョンを表示しました:
string dirIni = @"C:\Users\Dan\AppData\Local\MyApp 4.0\INI\";
string fileIni = @"PWTRANSACTION.INI";
try
{
string transIniFullFileName = Path.Combine(dirIni, fileIni);
using (StreamReader file = new StreamReader(transIniFullFileName))
{
// do StreamReader stuff...
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
例外のスタックトレースは次のとおりです。
at System.IO.Path.CheckInvalidPathChars(String path)
at System.IO.Path.GetFileName(String path)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.StreamReader..ctor(String path)
at TestApp.Form1.btnTestRead_Click(Object sender, EventArgs e) in C:\Users\Dan\TestApp\Form1.cs:line 4977