由于某种原因,当我创建将用于我的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,但它也给出了同样的问题。
答案 0 :(得分:4)
好的,看完完整的代码后:
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());
}
无需两次创建作家。
答案 1 :(得分:1)
试试这个:
var fileLocation = Path.Combine(Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), "QuickNote");
fileLocation = Path.Combine(fileLocation, "test.doc");
答案 2 :(得分:1)
如果你有C#4.0版本,你可以直接测试
Path.Combine(Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), "QuickNote", "test.doc");
答案 3 :(得分:0)
Path.Combine
将从字符串末尾删除“\”。
您应该在“+”的第二行内容中使用相同的方法。