![](/img/trans.png)
[英]How can I store an Environment.SpecialFolder path as a string and then parse it back to Environment.SpecialFolder?
[英]How to store C# SpecialFolder path into SQLite database?
我正在使用WPF应用程序,但遇到了棘手的问题。
SQLite数据库中有一个名为“ OutputFolder”的TEXT
字段,该字段存储不同的文件夹路径(顾名思义,该文件夹会在其中生成一些输出的文件夹)。
我想将特殊文件夹路径( Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
)保存到“ OutputFolder”中的SQLite
数据库中。
我要存储在数据库中的实际值
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\\\temp";
我没有选择使用任何其他目录或其他东西的选项。 很清楚,我必须将此路径存储到数据库中。
我愿意添加新列以指定任何标志值或将路径标识为特殊文件夹的任何内容。
据我了解-您需要存储两种类型的绝对路径和一种包含特殊文件夹的路径。 问题是如何识别路径的类型,然后相应地进行处理。
如果您不能更改db数据结构(以添加其他字段),则可能是一种将有关特殊文件夹的信息注入路径的方法。
例如,您可以使用无效(用于路径)字符标记注入的开始和结束。 然后,您的路径应类似于:
var injectedPath = "?5?\\temp";
当然,在读取时,您必须解析,如果找到了注入,则将其替换为真实路径。 在本例中,MyDocuments = 5参见Environment.SpecialFolder 。
首先, Rekshino的答案可能是实现这一目标的方法之一。
意思是我解决了这个问题。
如前所述,
我愿意添加新列以指定任何标志值或将路径标识为特殊文件夹的任何内容。
已实施的解决方案
数据库字段:
OutputFolder
=目录路径(静态路径或特殊文件夹下的剩余路径)
IsSpecialOutputFolder
=标识当前路径在何处有特殊文件夹的标志。
SpecialFolderId
= Environment.SpecialFolder
枚举值。 (在我们的示例中,MyDocuments = 5)。 我将默认值设置为-1,因为它不是Environment.SpecialFolder
枚举中任何项目的值。
有关此enum
更多详细信息,请参见Environment.SpecialFolder 。
用户界面:
信息背后的代码:
DropDown
为用户提供更多Environment.SpecialFolder
选择。 将以下Dictionary<int, string>
绑定到它。 将来,它将允许添加更多项目。
public static Dictionary<int, string> AllowedSpecialFolders = new Dictionary<int, string>()
{
{0,"Desktop" }, {5, "MyDocuments"}
};
CheckBox
选中/取消选中将启用和禁用DropDown
。
在输入特殊文件夹路径和静态路径的地方实施适当的验证。 示例:如果使用特殊路径,则其余目录路径不得包含任何根目录。
if (IsSpecialOutputFolder)
{
// ALL OTHER PROCESSING AND VALIDATIONS HERE.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.