C#定位部分已知mapname的目录

时间:2016-04-20 18:04:17

标签: c# directory temp

我正在尝试使用来自gmail的smtp发送文件,但我偶然发现了一个问题。

该文件将存储在windows appdata文件夹中。 要将文件添加到电子邮件中,我正在使用:

attachment = new System.Net.Mail.Attachment((Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/Folder1/Folder2/Folder3/result.txt"));

上面的代码有效,但是:

我目前遇到的问题是Folder2如上所示,将是一个包含数字,字母和单词TEMP的随机名称。

例如a12TEMP34b

如果我能够以某种方式使用*,我已经尝试并搜索过,但似乎无法使其正常工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你可以将Directory.GetDirectory解析成一个字符串数组并抓住该数组的第一个元素,如果你确定它将永远是那个路径。

所以:

string staticPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/Folder1/";

string dynamicFolder = Directory.GetDirectory(staticPath, "*TEMP*")[0];

string finalPath = dynamicFolder + "/Folder3/result.txt"

答案 1 :(得分:0)

您可以使用Directory.EnumerateDirectories搜索特定文件夹:

var folder1 = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Folder1");
var folder2 = Directory.EnumerateDirectories(folder1, "*TEMP*").Single();
var path = Path.Combine(folder2, "Folder3/result.txt");
attachment = new System.Net.Mail.Attachment(path)