我有以下代码:
string fFileName = @txtSelectedFolder.Text + "\\" + file.Name;
txtSelectedFolder.text 仅包含文件夹路径(例如:c: emp est)
file.name 是 FileInfo 类型,其中 name 包含对文件集合中当前选定文件的引用。
一旦我使用上面的代码,我的 fFileName var 就会填充一个转义字符串,如
c:\\temp\\test\filename.ext
我如何确保 fFileName 包含文件文件夹(和名称)的未转义版本
添加额外的怪事时,您没有使用文字 (
\
) 。这意味着你的字符串在编译时会转义 \
并留下一个怪胎。
更改线路:
string fFileName = @txtSelectedFolder.Text + "\\" + file.Name;
到
string fFileName = txtSelectedFolder.Text + @"\" + file.Name;
变量前面不需要
@
文字符号。
或者:
您可以改为使用
string fFileName = Path.Combine(txtSelectedFolder.Text, file.Name);
将文件名正确连接到所选文件的路径。
如果使用 .net 5 或更高版本,您也可以使用
Uri.UnescapeDataString
阅读更多相关信息这里,示例如下:
var unescapedPath = Uri.UnescapeDataString("\\\\server\\dir1\\dir2");
Console.WriteLine(unescapedPath);
// \\server\dir1\dir2