不支持给定路径的格式。 C#

时间:2016-06-24 09:47:53

标签: c#

OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "Select Student Picture";
ofd.InitialDirectory = @"C:\Picture";
ofd.Filter = "All Files|*.*|JPEGs|*.jpg";
//ofd.Multiselect = false;
if (ofd.ShowDialog()==DialogResult.OK)
{
    if (ofd.CheckFileExists)
    {
        pbStudent.ImageLocation = ofd.FileName;
        string path = ofd.SafeFileName;
        System.IO.File.Copy(ofd.FileName, "/Resources/SImages/" + lblRNo + ".jpg");
    }
}

有人可以帮我解决此错误消息的问题:

  

不支持给定路径的格式。

3 个答案:

答案 0 :(得分:1)

在这里,您使用正确的方式在Windows中使用反斜杠格式化路径

ofd.InitialDirectory = @"C:\Picture";

在下一行你转移它

System.IO.File.Copy(ofd.FileName, "/Resources/SImages/" + lblRNo.Text + ".jpg");

保持你在开始时的方式:

System.IO.File.Copy(ofd.FileName, @"\Resources\SImages\" + lblRNo.Text + ".jpg");

避免此类烦恼的一种方法是使用System.IO.Path.Combine()

string path = System.IO.Path.Combine("Resources", "SImages");
编辑:由于史蒂夫的非凡观察,我将lblRNo更改为lblRNo.Text

答案 1 :(得分:1)

您的问题是用于表示目标文件名称的lblRNo变量。看来这是程序的标签,而不是包含文件名的字符串。要获得正确的值,您应该使用标签的Text属性。

System.IO.File.Copy(ofd.FileName, @"/Resources/SImages/" + lblRNo.Text + ".jpg");

当然,指定了相对路径后,您应该确保该路径相对于执行代码的根驱动器存在。
例如,如果您的代码在C:驱动器上运行,那么就是路径

 C:\Resources\SImages 

应该存在,否则你得到关于你的路径的一部分未被发现的执行。

正如其他人所说,Windows中正确的路径分隔符是反斜杠但你也可以使用正斜杠而没有任何问题

答案 2 :(得分:0)

请改为尝试:

System.IO.File.Copy(ofd.FileName, @"\Resources\SImages\" + lblRNo + ".jpg");

/是互联网,\是适用于您的计算机内部:)