我正在创建一个应用程序,使用照片和XML文件,它们都在我手动创建的一个文件夹中。我希望让用户通过应用程序在运行时更新该文件夹的数据(添加照片和编辑XML文件)。我的问题是什么是最好的方法以及将该文件夹放在哪里?我知道必须使用相对路径,所以我很困惑,是否应该将其放在AppData中,如果是,怎样做。
// Use this to get the common directory
string CommonDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
// And combine it with your own.
// On Window7 this will return "c:\ProgramData\YourCompany\YourProduct"
string YourDir = Path.Combine(CommonDir, @"YourCompany\YourProduct");
// And create the directory / ensure it exists
System.IO.Directory.CreateDirectory(YourDir);
系统中还有其他一些特殊文件夹,比如MyDocuments
或Desktop
,可以根据您的需要进行选择。
Environment.SpecialFolder.CommonApplicationData
我找到了 Environment.SpecialFolder.MyDocuments
。 - Ahmed HABBACHI您可以使用不同的隔离范围来管理文件,而不必担心它们的实际位置:
应用程序 - 隔离存储范围为应用程序。
程序集 - 隔离存储范围为程序集的标识。
域 - 隔离存储范围为应用程序域标识。
机器 - 隔离存储范围为机器。
无 - 不使用隔离存储。
漫游 - 隔离存储可以放置在文件系统上可能漫游的位置(如果底层操作系统启用了漫游用户数据)。
用户 - 隔离存储由用户身份标识。
但是,您可能不需要如此控制文件的隔离。在这种情况下,您可以简单地使用本地用户应用程序文件夹:
string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
AppDomain.CurrentDomain.BaseDirectory
您不应将文件夹放置在解决方案的文件夹(如AppData,实际上是一个可以包含数据库文件的文件夹)之一中,因为当您完成应用程序的开发后,只会得到.EXE输出文件(放置在Debug文件夹中),而那就是您要使用的文件,或者例如交付给您的客户的文件。(但是像您提到的AppData这样的文件夹只放置在您的解决方案中)
因此,您可以在任何地方创建文件夹。但我建议您将其创建在应用程序的当前目录(.EXE文件)中。
您可以使用Environment类引用当前目录 => Environment.CurrentDirectory
CreateDirectory
创建新文件夹并将文件保存在其中。 - Praveen S