在C#中使用GetFiles()时如何定位相对文件路径?

时间:2017-02-26 16:03:37

标签: c# asp.net visual-studio-2015 path

我发现了一些相关的问题,但他们并没有那么好用。图像名称是修改后的GUID,如3c6b4a9b-8e88-4c8e-93da-258acd2c964f_0,但扩展名未知(.jpg,.gif,.. iec)。 GUID将来自gridview,因此它不是静态字符串。以下是我所拥有的,但我很难让路径正常工作。

    string fileName = `3c6b4a9b-8e88-4c8e-93da-258acd2c964f`;
    DirectoryInfo filePath = new DirectoryInfo(@"/Images");
    MessageBox.Show(filePath.ToString());
    FileInfo[] fileArray = filePath.GetFiles(fileName + "_0.*");

不断收到目录无效的问题。目前文件存储在我的c:驱动器上。

如何在没有硬编码的情况下获得相对路径?我正在使用暂时工作的DirectoryInfo(Server.MapPath("Images")); 然后开始发出此错误System.ArgumentException: Second path fragment must not be a drive or UNC name.,这似乎是来自有驱动器的路径" C:" 这不是&一旦网站启动,这似乎是一个永久的解决方案。

实际路径为C:\Website\Name\Images\3c6b4a9b-8e88-4c8e-93da-258acd2c964f_0.jpg

谢谢!

2 个答案:

答案 0 :(得分:1)

您已使用filePath作为GetFiles的第一个参数,只需使用通配符并使用一个参数调用GetFiles的重载。

filePath.GetFiles("_0.*");

答案 1 :(得分:1)

问题在于您获得了“{C:\ Images”的DirectoryInfo

您希望使用Server.MapPath获取您网站中文件夹的物理路径(可能是任何驱动器上的任何位置)。

使用~表示从正在运行的网站的根目录开始。

所以这应该可以解决问题:

string fileName = `3c6b4a9b-8e88-4c8e-93da-258acd2c964f`;
DirectoryInfo filePath = new DirectoryInfo(Server.MapPath("~/Images"));
FileInfo[] fileArray = filePath.GetFiles(fileName + "_0.*");