我有一个Winforms应用程序,如果该目录不存在,该应用程序应该在公共文档文件夹中创建一个子目录,并将文本文件保存到该目录中。但是,如果子目录不存在,它实际上会在“ C:/ Users / Public”下创建另一个名为“公共文档”的目录,而不仅仅是在现有“ C:/ Users / Public”文件夹下创建一个子目录。 (在下面的示例中,子目录是变量'token'。)因此,我最终得到2个名为Public Documents的文件夹:
这是我的代码:
if (result == DialogResult.Yes)
{
subPath = @"C:\Users\Public\Public Documents\" + token + @"\Tests\";
}
else if (result == DialogResult.No)
{
subPath = @"C:\Users\Public\Public Documents" + @"\Tests\";
}
TestModel testCall = new TestModel
{
Name = frm.fileName,
MethodName = txtApiMethod.Text,
Parameter = rtxtJson.Text,
SchemaKey = txtSchemaKey.Text
};
bool exists = System.IO.Directory.Exists(subPath);
string fileName = frm.fileName + ".txt";
string json = JsonConvert.SerializeObject(testCall);
string filePath = subPath + fileName;
if (!exists)
{
System.IO.Directory.CreateDirectory(subPath);
}
using (StreamWriter file = File.CreateText(filePath))
{
file.Write(json);
}
有人可以告诉我为什么要创建一个重复的命名目录吗?我可以在现有目录下创建一个新的子目录怎么办?
非常感谢您的协助!
答案 0 :(得分:4)
C:\Users\Public\Public Documents
是显示名称。我有法文Windows,显示名称为C:\Users\Public\Documents publics
真实路径为C:\Users\Public\Documents
显示:
真实:
要确保您使用的是正确的文件夹路径(出于某些原因,可以使用d:
,或者路径可能完全不同。请勿使用硬编码路径),可以使用链接到System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonDocuments);
的{{1}},例如:
C:\Users\Public\Documents
有关更多信息,请参见文档System.Environment.SpecialFolder
和System.Environment.GetFolderPath()