Directory.GetFiles()返回完整路径

Spi*_*rls 1 .net c# asp.net directory

我想在特定目录中返回图像文件.我想像这样创建图像路径

  string[] ImageNames = Directory.GetFiles(path);


        string tds="";
        for (int i = 0; i < ImageNames.Length; i++)
        {
          tds += "<tr> <td> <img href=/Articles/ArticleImageStore/'" + ImageNames[i] + "' width='64' height='64'></img></tr> </td>";
        }
Run Code Online (Sandbox Code Playgroud)

但它返回磁盘上文件的物理路径.我该怎么办?

Ode*_*ded 5

你可以使用Path.GetFileName:

string[] ImageNames = Directory.GetFiles(path)
                                    .Select(p => Path.GetFileName(p)).ToArray();
Run Code Online (Sandbox Code Playgroud)

这将生成一个仅包含文件名称的列表.

  • @evanmcdonnal - 感谢您的编辑. (2认同)

eva*_*nal 5

而不是使用Directory我会使用的类,DirectoryInfo那么你可以这样做;

 string[] fNames = new DirectoryInfo(dirPath).GetFiles("*.png").Select(x => x.FileName).ToArray();
Run Code Online (Sandbox Code Playgroud)

DirectoryInfoGetFiles的版本返回 FileInfo 对象而不是文件路径作为字符串,因此您可以对结果执行更多操作。我碰巧有一个选择,通过为 GetFiles 返回的每个 FileInfo 实例投影一个 FileName 来取消它,但是如果您需要对文件执行更多操作,您可以删除它,然后循环遍历 FileInfo 对象。

另外,我正在使用一个重载,它有一个模式,可以很容易地忽略你的非图像文件。

DirectoryInfo 文档;http://msdn.microsoft.com/en-us/library/8he88b63.aspx