Как я могу получить доступ к локальной папке внутри проекта WPF для загрузки и хранения файлов? - PullRequest
0 голосов
/ 03 февраля 2020

Мне нужна библиотека векторных файлов, где каждый раз должны использоваться одни и те же файлы. Я хочу загрузить их из папки и иметь возможность сохранять новые.

Я попытался создать папку библиотеки внутри проекта 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");

Это работало при запуске на P C, проект был закрыт, но программа аварийно завершала работу при запуске .exe на другом P C. Как это исправить или есть лучший подход к этому?

1 Ответ

0 голосов
/ 04 февраля 2020

Создайте подпапку в 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");

Спасибо Джонатан Альфаро и Клеменс !

...