首页 > 解决方案 > 如何访问 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 上运行时程序崩溃。我该如何解决这个问题或者有更好的方法来解决这个问题?

标签: c#wpffilepathsolutionstoring-data

解决方案


在 下创建一个子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");

感谢乔纳森阿尔法罗克莱门斯


推荐阅读