1

出于某种原因,当我创建将用于我的 StreamWriter 的路径时,它会创建一个名为 test.doc 的文件夹,而不是一个名为 test.doc 的文件

这是我的代码:

fileLocation = Path.Combine(Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), "QuickNote\\");
fileLocation = fileLocation + "test.doc";

谁能告诉我我的文件路径做错了什么?

更新:

class WordDocExport
{
    string fileLocation;
    public void exportDoc(StringBuilder sb)
    {
        fileLocation = Path.Combine(Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), "QuickNote\\");
        fileLocation = fileLocation + "test.doc";

        if (!Directory.Exists(fileLocation))
        {
            Directory.CreateDirectory(fileLocation);
            using (StreamWriter sw = new StreamWriter(fileLocation, true))
            {
                sw.Write(sb.ToString());
            }
        }

        else
        {
            using (StreamWriter sw = new StreamWriter(fileLocation, true))
            {
                sw.Write(sb.ToString());
            }
        }
    }
}

抱歉耽搁了。今天早上我在上班前发布了这个问题,当时我什至没有想过要发布我的其余代码。所以,就在这里。我也尝试在第二行 test.doc 上做一个 Path.Combine 但它给出了同样的问题。

4

4 回答 4

4

OK,看到完整代码后:

    fileLocation = fileLocation + "test.doc";

    if (!Directory.Exists(fileLocation))
    {
        Directory.CreateDirectory(fileLocation);     // this is the _complete_ path
        using (StreamWriter sw = new StreamWriter(fileLocation, true))
        {
            sw.Write(sb.ToString());
        }
    }

您实际上是使用以“test.doc”结尾的字符串调用 CreateDirectory。路径是否以结尾都没有关系\,并且"<something>\QuickNote\test.doc" 有效的文件夹路径。

您可以将代码替换为:

string rootFolderPath = Environment.GetFolderPath(
    System.Environment.SpecialFolder.MyDocuments);

string folderPath = Path.Combine(rootFolderPath, "QuickNote");

if (!Directory.Exists(folderPath))
{
    Directory.CreateDirectory(folderPath);
}

fileLocation = Path.Combine(folderPath, "test.doc");

using (StreamWriter sw = new StreamWriter(fileLocation, true))
{
    sw.Write(sb.ToString());
}

     

无需两次创建作家。

于 2012-08-21T17:48:07.067 回答
1

试试这个:

var fileLocation = Path.Combine(Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), "QuickNote");
fileLocation = Path.Combine(fileLocation, "test.doc");
于 2012-08-21T12:11:13.577 回答
1

如果你有 C# 4.0 版本可以直接测试

Path.Combine(Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), "QuickNote", "test.doc");
于 2012-08-21T12:11:56.267 回答
0

Path.Combine将从字符串末尾删除“\”。

您应该在“+”的第二行使用相同的方法。

于 2012-08-21T12:10:41.110 回答