创建和使用C#应用程序文件夹

4

我正在创建一个应用程序,使用照片和XML文件,它们都在我手动创建的一个文件夹中。我希望让用户通过应用程序在运行时更新该文件夹的数据(添加照片和编辑XML文件)。我的问题是什么是最好的方法以及将该文件夹放在哪里?我知道必须使用相对路径,所以我很困惑,是否应该将其放在AppData中,如果是,怎样做。


使用 CreateDirectory 创建新文件夹并将文件保存在其中。 - Praveen S
我已经创建了文件夹,我的问题是将其放在AppData还是程序执行文件夹中。 - Ahmed HABBACHI
4个回答

7
// 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);

系统中还有其他一些特殊文件夹,比如MyDocumentsDesktop,可以根据您的需要进行选择。


我认为我找到了适合我的东西,使用你的 Environment.SpecialFolder.CommonApplicationData 我找到了 Environment.SpecialFolder.MyDocuments - Ahmed HABBACHI
太好了!我已更新我的回答,包括所有特殊文件夹类型的链接。 - noelicus

2
首先,在项目资源管理器上右键单击,然后添加新文件夹。这将显示一个空文件夹,您需要将这些文件放入其中。

在安装我的应用程序后,该文件夹将被放置在哪里?用户可以编辑该文件夹吗? - Ahmed HABBACHI

0

看这里:System.IO.IsolatedStorage

您可以使用不同的隔离范围来管理文件,而不必担心它们的实际位置:

应用程序 - 隔离存储范围为应用程序。

程序集 - 隔离存储范围为程序集的标识。

- 隔离存储范围为应用程序域标识。

机器 - 隔离存储范围为机器。

- 不使用隔离存储。

漫游 - 隔离存储可以放置在文件系统上可能漫游的位置(如果底层操作系统启用了漫游用户数据)。

用户 - 隔离存储由用户身份标识。

(从这里开始:http://msdn.microsoft.com/en-us/library/system.io.isolatedstorage.isolatedstoragescope(v=vs.110).aspx

但是,您可能不需要如此控制文件的隔离。在这种情况下,您可以简单地使用本地用户应用程序文件夹:

string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

看看这个:Environment.SpecialFolder - 里面有很多有用的位置。
当然,你也可以随时使用你的应用程序文件夹:
AppDomain.CurrentDomain.BaseDirectory

另一种访问它的方式:获取应用程序文件夹路径的最佳方法

0

您不应将文件夹放置在解决方案的文件夹(如AppData,实际上是一个可以包含数据库文件的文件夹)之一中,因为当您完成应用程序的开发后,只会得到.EXE输出文件(放置在Debug文件夹中),而那就是您要使用的文件,或者例如交付给您的客户的文件。(但是像您提到的AppData这样的文件夹只放置在您的解决方案中)

因此,您可以在任何地方创建文件夹。但我建议您将其创建在应用程序的当前目录(.EXE文件)中。

您可以使用Environment类引用当前目录 => Environment.CurrentDirectory


在当前目录写入会导致许多权限问题。如果您的可执行文件位于程序文件下,您将无权在该目录中写入,除非您以高权限运行。更好的位置是用户的应用数据或文档目录。 - Steve B
他说他想让用户编辑文件夹的内容:“我想让用户更新那个文件夹的数据”。那么,当文件夹(如您所说的AppData)只是在解决方案目录中而不在输出可执行文件(.EXE)中时,他想要如何让用户编辑文件夹的内容呢? - Seyed Hamed Shams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接