2016-09-06 75 views
-1

我有一块应该将覆盖的文件发送到我的桌面,但代码似乎没有工作,我正在使用MVC应用程序而不是控制台应用程序。如何使用Streamwriter将文件写入桌面

任何人都可以告诉我我做错了什么或建议我如何实现我的解决方案。

using (var File = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "~/ColTexOutputFileTest.csv", false)) // true for appending the file and false to overwrite the file 
{ 
    foreach (var item in outputFile) 
    { 
     File.WriteLine(item); 
    } 
} 
+3

“但代码似乎并不奏效“ - 你是什么意思?你有什么异常吗?如果是这样,在这里发布一些细节。 –

+3

如果这是一个MVC应用程序,您的桌面是否期望将其写入?最终用户还是服务器? –

回答

4

删除'〜'字符。

"\ColTexOutputFileTest.csv" 
1

“〜”用于查找服务器端文件夹或文件

对于实例如果您在abc.xml文件

HttpContext.Current.Server.MapPath("~/App_Data/abc.xml"); 

访问App_Data文件夹,如果你在流文件时,此字本地访问文件为windows路径

using (var File = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\ColTexOutputFileTest.csv", false)) // true for appending the file and false to overwrite the file 
{ 
    foreach (var item in outputFile) 
    { 
     File.WriteLine(item); 
    } 
} 

“〜/ ColTexOutputFileTest.csv” 改变它 “\ ColTexOutputFileTest.csv”

1

如上答案所述,〜是问题所在。 .NET提供了对加入路径&文件名&不需要知道是否需要隔离一个结合方法Path类:

using (var File = new StreamWriter(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "ColTexOutputFileTest.csv"), false)) 

参见:https://msdn.microsoft.com/en-us/library/system.io.path(v=vs.110).aspx

相关问题