系统.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.

最后,我需要复制一个工作表到另一个文件。

我做错了什么?

系统.ArgumentException:路径中存在非法字符.错误

这段代码看起来是做什么,它得到你的工作目录(无论与你的代码相关联的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你会看到一个坏的符号字符是非法的