2014-09-19 153 views
0

我被困在一些非常简单的东西,但似乎无法找到我正在寻找什么。如何在C#中使用“Environment.UserName”检查文件是否存在?

我在写一个简单的应用程序来检查文件是否存在。它将被多个用户使用,因此不能包含特定的用户名。

我可以用得到当前用户名:

string userName = Environment.UserName; 

当我使用IF语句来检查文件是否存在,我收到错误“无法识别的转义序列”下的文件的“d”。

if (File.Exists(@"C:\Users\"+ userName +"\Documents\test.txt")) 
     { 
      lblUser.Text = "File exists"; 
     } 

任何人都可以指出我的愚蠢错误吗?

谢谢!

+0

对你choosen答案没有一个文档。它正确指向原始问题,但是如果您的用户转到“文档”文件夹的“属性”页面并更改“路径”页面中的值?选择的答案失败,还有其他问题,如使用硬编码路径,使用操作系统特定的路径分隔符。所有这些类型的问题都可以避免,如果你使用特定的框架工具 – Steve 2014-09-19 16:21:39

回答

3

连接时需要reescape。

if (File.Exists(@"C:\Users\"+ userName [email protected]"\Documents\test.txt")) 
6

请勿使用Environment.UserName来查找Documents文件夹。
用户可以使用操作系统工具轻松更改该位置。

改用

string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
string fileToCheck = Path.Combine(docFolder, "test.txt"); 
if (File.Exists(fileToCheck)) 
{ 
    lblUser.Text = "File exists"; 
} 

查看Environment.SpecialFolder enum here

+1

你击败了我; p – 2014-09-19 13:22:13

+0

@MarcGravell它不会每天都发生:-) – Steve 2014-09-19 13:23:07

+1

只是看看文档,仅供参考 - '.Personal'可用时可能更可取;它*本质上*相同,但在XNA中也存在 – 2014-09-19 13:24:20

相关问题