CreateDirectory在公用文件夹中创建重复目录

时间:2019-05-21 13:28:39

标签: c# windows file-io

我有一个Winforms应用程序,如果该目录不存在,该应用程序应该在公共文档文件夹中创建一个子目录,并将文本文件保存到该目录中。但是,如果子目录不存在,它实际上会在“ C:/ Users / Public”下创建另一个名为“公共文档”的目录,而不仅仅是在现有“ C:/ Users / Public”文件夹下创建一个子目录。 (在下面的示例中,子目录是变量'token'。)因此,我最终得到2个名为Public Documents的文件夹:

enter image description here

这是我的代码:

        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);

        }

有人可以告诉我为什么要创建一个重复的命名目录吗?我可以在现有目录下创建一个新的子目录怎么办?

非常感谢您的协助!

1 个答案:

答案 0 :(得分:4)

C:\Users\Public\Public Documents显示名称。我有法文Windows,显示名称为C:\Users\Public\Documents publics

真实路径为C:\Users\Public\Documents

显示:

Screenshot showing C:\Users\Public\Documents publics as display name

真实:

Screenshot showing C:\Users\Public\Documents as real path

要确保您使用的是正确的文件夹路径(出于某些原因,可以使用d:,或者路径可能完全不同。请勿使用硬编码路径),可以使用链接到System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonDocuments);的{​​{1}},例如:

C:\Users\Public\Documents

有关更多信息,请参见文档System.Environment.SpecialFolderSystem.Environment.GetFolderPath()