[英]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.