修改路径字符串以提高稳健性

我有一个字符串,用于我的程序从中读取数据的文件的路径。 我想提高稳健性,我记得看到有人这样做。\ blabla \ blalbla \但我发现有点难以找到解释这项工作的主题,所以我可以将它实现到我的程序中。

我的路径(我知道命名不正确但如果我用大写字母P命名它会干扰我的属性)

private const string path = @"C:\Users\zain\Desktop\program_storage\AccountDatabase.txt"; 

我希望它类似.\program_storage\AccountDatabase.txt (不幸的是这不起作用),因为它意味着我可以移动程序而不必更改常量类中的字符串。

任何和所有的帮助表示赞赏

您可以使用以下内容来存储/读取文件:

 var dir = Path.Combine(Environment .GetFolderPath(Environment.SpecialFolder.ApplicationData), "MyProgram"); if(!Directory.Exists(dir)) Directory.CreateDirectory(dir); var path = Path.Combine(dir, "AccountDatabase.txt"); 

这将在您的用户帐户的App_Data中使用或创建一个文件夹,然后将路径返回到该文件夹​​中的文件。 有关其他可能的位置,请参阅Environment.SpecialFolder枚举。

您可以使用System.IO.IsolatedStorage命名空间中的IsolatedStorageFile类轻松访问为应用程序和用户隔离的目录:

有关详细信息,请参阅MSDN文档: http : //msdn.microsoft.com/en-us/library/3ak841sy(v=vs.110).aspx

这里有一个关于MSDN的好例子

这提供了对硬盘上物理位置的良好抽象,并支持本地和漫游用户配置文件。

注意 –

如果使用本地配置文件,那么物理位置仍将是\Users\\AppData\Local目录(对于Windows Vista / \Users\\AppData\Local / server 2008),根据其他答案

注2

您还可以在IsolatedStorageFile上使用静态方法来获取机器范围的存储(所有用户)

 IsolatedStorageFile isoFile = IsolatedStorageFile.GetMachineStoreForApplication(); 

这将使您获得Windows Vista或更高版本上的\Users\All Users\AppData\Local目录