gpt4 book ai didi

c# - 使用 StreamReader 时路径中出现非法字符

转载 作者:行者123 更新时间:2023-11-30 20:04:38 27 4
gpt4 key购买 nike

我无法在 C# 中打开 StreamReader 对象。我总是收到异常 Illegal characters in path。我能让它工作的唯一方法是如果我使用整个路径名使用 @ 符号来不转义文件路径中的任何 \ 字符。但是,这并没有真正帮助我,因为我从文件路径的两个单独变量和文件名开始,作为另一种方法的输出(无法更改)。

我经历了八个排列都失败了,下面注释掉以供引用。为了这里的可读性,假设我正在声明 dirInifileIni 而不是从另一个方法接收它们的值作为输出。话虽如此,声明样式 1 和 2 都无法使用所有四种连接方法。这里发生了什么?我几乎已经看到所有四种连接方法在其他示例中都有效。

编辑:我简化了代码以显示对我来说有问题的 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

最佳答案

问题是该方法返回的字符串末尾有一个字段分隔符,这是非法字符。我也在我的测试代码中使用了这些字符串。我将我的代码粘贴到 Notepad++ 并打开“显示隐藏字符”,然后我可以看到 FS 字符。删除 FS 后,一切正常运行。感谢大家帮助我测试代码,尤其是@Dynguss。

任何时候 VS 给出非法字符异常,检查潜在的隐藏字符!

关于c# - 使用 StreamReader 时路径中出现非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12604240/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com