我应该在哪里保存我的序列化数据文件? [复制]

Posted

技术标签:

【中文标题】我应该在哪里保存我的序列化数据文件? [复制]【英文标题】:Where should I save my serialized data file? [duplicate] 【发布时间】:2013-08-22 12:42:56 【问题描述】:

对于点网程序,存储序列化数据的“正确”位置在哪里?

在 /user/username 文件夹中?程序文件/MyAppName/?别的地方?

【问题讨论】:

如果不同的用户存储不同的数据,那么将其存储在他们的用户帐户中而不是程序文件中是有意义的。 取决于数据代表什么,它的使用环境是什么,它有多大,它的使用频率等。提供更多关于你想要达到什么目的的信息以获得好的答案。跨度> 我没有搜索应用程序设置,因为这更多的是关于应用程序数据,而不是设置。有时它可能是一个灰色区域。抱歉重复了。 【参考方案1】:

来自 Microsoft 的 Pat Altimore 的This blog post 建议了多个位置,具体取决于您尝试存储的数据类型。

.NET 提供了特殊的枚举值,您可以将其传递到System.Environment.GetFolderPath,以获得所需的“特殊”文件夹。

简而言之:

如果是用户特定的数据,请使用SpecialFolder.ApplicationData。 如果是特定于机器的数据,请使用SpecialFolder.CommonApplicationData

对于特定于机器的数据,您可能还需要以管理员身份运行程序,否则您将无法对该位置进行写访问。

【讨论】:

【参考方案2】:

我会说这取决于您要存储的日期类型。如果是用户特定日期,那么我建议使用

返回的路径

Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData);

如果不是特定于用户的数据,也就是说,它是程序的所有用户共享的数据,那么将其存储在安装路径下的文件夹中可能更合适。

【讨论】:

我非常不同意你的结束语;不建议将特定于机器的数据存储在安装路径中。 Windows 为此类数据提供了“通用应用程序数据”位置。安装路径(即“Program Files”文件夹)旨在存储应用程序文件。

以上是关于我应该在哪里保存我的序列化数据文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 UWP 中,我应该在哪里保存用户数据?

使用 FireMonkey 及其跨平台,我应该在哪里存储我的应用程序数据?

作为开发人员,我应该如何使用 Windows Vista(和 Windows 7)中的特殊文件夹?

我应该把我的 .jasper 文件放在哪里以及如何访问它? [复制]

我应该在Android中将文件保存到本地访问位置?

在哪里保存核心数据上下文...?