c# - 如何访问 WPF 项目中的本地文件夹以加载和存储文件?
问题描述
我需要一个矢量文件库,每次都必须使用相同的文件。我想从文件夹中加载它们并可以选择存储新的。
我尝试在 WPF 项目中有一个包含文件的库文件夹:
Solution/Project/Library/file1.dxf
我像这样加载它们:
string currentDir = Directory.GetCurrentDirectory();
var cutOff = currentDir.LastIndexOf(@"\bin\");
var folder = currentDir.Substring(0, cutOff) + @"\Library\";
string[] filePaths = Directory.GetFiles(folder, "*.dxf");
这在构建项目的 PC 上运行时有效,但是当 .exe 在另一台 PC 上运行时程序崩溃。我该如何解决这个问题或者有更好的方法来解决这个问题?
解决方案
在 下创建一个子Environment.SpecialFolder.ApplicationData
文件夹,如果存在,则读取库文件夹中的文件。如果不创建它并将现有的库文件保存到它(这里来自资源):
string appFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string path = appFolder + @"\MyAppLibrary\";
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
// Add existing files to that folder
var rm = Properties.Resources.ResourceManager;
var resSet = rm.GetResourceSet(CultureInfo.CurrentUICulture, true, true);
foreach (var res in resSet)
{
var entry = ((DictionaryEntry)res);
var name = (string)entry.Key;
var file = (byte[])rm.GetObject(name);
var filePath = path + name + ".dxf";
File.WriteAllBytes(filePath, file);
}
}
// Load all files from the library folder
string[] filePaths = Directory.GetFiles(path, "*.dxf");
推荐阅读
- php - Symfony在apache服务器上重定向太多
- github - 合并按钮被禁用,但我的拉取请求被批准。什么能阻止我?
- azure - Azure AD B2C - 更改域
- html - 如何使用 svg 进行 2 个背景颜色划分
- firebase - React Navigation 在 React Native App 中无法与 Firebase 一起使用
- python - 为什么一行python循环和传统循环返回不同的结果?
- python - 在python(熊猫)中将通用日期转换为日期时间
- makefile - 如何将 CMAKE_MAKE_PROGRAM 设置为忍者?
- python - 如何在python中读取列表?,=行和空间=列
- compiler-construction - Table-Driven Lexers - 保留关键字呢?