系统.ArgumentException:路径中存在非法字符.错误
本文关键字:非法 字符 错误 存在 ArgumentException 路径 系统 | 更新日期: 2023-09-27 18:03:38
我从以下代码中得到一个ArgumentException:
string strPath="C:'somename.xls";
startPath=System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
filePath = System.IO.Path.Combine(startPath, strPath);
我在Stack Overflow上找到了这个代码。链接:c#:复制受保护的工作表到另一个excel文件我也不知道那是什么。请告诉我是什么。我正在构建一个exe.
最后,我需要复制一个工作表到另一个文件。
我做错了什么?
这段代码看起来是做什么,它得到你的工作目录(无论与你的代码相关联的exe
在哪里),并将它与"C:''somename.xls"
组合(这没有意义)
我想你可能想写
string strPath=@"somename.xls";
假设你从
开始运行应用程序"C:'Users'owner'documents'visual studio 2012'Projects'ConsoleApplication1'ConsoleApplication1'bin'Debug"
代码会做的是将filePath
设置为
"C:'Users'owner'documents'visual studio 2012'Projects'ConsoleApplication1'ConsoleApplication1'bin'Debug'somename.xls"
我看到的第一件事是
string filePath="C:'somename.xls";
'
是一个特殊字符,用于确定其他字符。例如,''n'
是换行符。''''
是实际的反斜杠。
所以,你想用另一个'
来转义'
string filePath="C:''somename.xls";
或通过在其前面加上@
使其成为字面值字符串。
string filePath=@"C:'somename.xls";
你的代码应该是:
string filePath = "C:''somename.xls"
你需要双反斜杠
代码有两个问题,
首先string filePath="C:'somename.xls";
'
是一个特殊字符,用于确定其他字符。例如,''n'
是换行符。''''
是实际的反斜杠。
第二
filePath
包含根路径C:''
。Path.Combine
只会返回filePath
,不能合并
您的主要问题是在startPath
参数。
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
如果你跟踪你的代码,在FileName
你会看到一个坏的符号字符是非法的