C# 如何从c中的字符串中获取实际路径#

C# 如何从c中的字符串中获取实际路径#,c#,string,C#,String,Hi-am在File.Copy()方法中传递路径时遇到问题。 这里我创建了一个字符串dest。当我在File.copy()中传递它时,它采用了“\”双斜杠。正因为如此,我得到了非法字符的错误。请调查一下 string dest = (@"\" + Environment.MachineName +@"\"+ Path.Replace(@"\\",@"\")).Replace(":", "$"); //the value get -"pt-LTP-109\\C$\\Temp\\192.168.0

Hi-am在File.Copy()方法中传递路径时遇到问题。 这里我创建了一个字符串dest。当我在File.copy()中传递它时,它采用了“\”双斜杠。正因为如此,我得到了非法字符的错误。请调查一下

string dest = (@"\" + Environment.MachineName +@"\"+ Path.Replace(@"\\",@"\")).Replace(":", "$");  //the value get -"pt-LTP-109\\C$\\Temp\\192.168.0.205\\fileFolder"
dest = dest.Replace("\\\\", @"\") +"\\"+ "filename.txt"; // the value get -"\\pt-LTP-109\\C$\\Temp\\192.168.0.205\\fileFolder\\filename.txt"                             
dest = ("\"").ToString()+dest+"\""; //the value get- "\"\\pt-LTP-109\\C$\\Temp\\192.168.0.205\\fileFolder\\filename.txt\""
    File.Copy(source, dest, true);`
试一试


这是一个非常复杂的方式做这么简单的事情。。。要将普通路径转换为UNC路径,只需执行两项操作:

  • 替换为
    $
    (您的操作正确)

  • 在路径前面加上两个反斜杠和机器名

  • 您的代码可以缩短为:

    string dest = System.IO.Path.Combine(@"\\" + Environment.MachineName, Path.Replace(":", "$"), "filename.txt");
    

    为什么要在路径中添加引号?那肯定会使它无效。如何检查字符串?如果在调试器中,由于转义,它将使反斜杠加倍。此外,如果这应该是一个UNC路径,那么您需要在开始时使用双反斜杠,而这是您没有的。我假设您的问题只是添加引号,没有双反斜杠,没有删除反斜杠。对于初学者来说,路径不应该包含引号(
    ).你有一种非常奇怪的方法来构建你的路径…你到底想用这些来完成什么?我不认为他想复制每个反斜杠。这样做也会使路径无效。@Code\u初学者我相信使用这个答案是不好的做法…@VisualIncent和Alex M。你知道为什么这样做吗?我不认为你知道,如果你投票否决了这个答案,你就是不理解它,这就是为什么你认为它是错误的你知道自己为什么它工作吗?我还没有通过调试器运行过这个,但是路径不应该包含双反斜杠(UNC路径的开头除外)。因此,强迫它这样做是不好的做法,即使它(目前)有效。顺便说一句,避免否决票的一个好方法是在答案中加入解释,以便其他读者(和OP)能够预感到哪里出了问题,以及为什么你的解决方案会修复它。
    string dest = System.IO.Path.Combine(@"\\" + Environment.MachineName, Path.Replace(":", "$"), "filename.txt");