Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/37: Рейтинг темы: голосов - 37, средняя оценка - 4.89
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
1

Извлечь файл из ресурсов в WPF приложении

08.06.2011, 15:35. Показов 7187. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ, помогите, как мне извлечь файл из ресурсов? Я пробовал так, но не пашет, точнее копирует, но файл уже не работает. Копировал текстовый файл, после копирования он такого же размера, но пустой (без текста):
C#
1
2
3
4
5
6
7
8
9
10
        private void CopyDatabaseFromResource(String destinationPath)
        {
            Uri uri = new Uri(@"pack://application:,,,/Resources/Data.accdb", UriKind.Absolute);
            Stream stream = Application.GetContentStream(uri).Stream;
            byte[] byteResource = new byte[stream.Length];
            using (FileStream fs = new FileStream(destinationPath, FileMode.CreateNew, FileAccess.Write))
            {
                fs.Write(byteResource, 0, byteResource.Length);
            }
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2011, 15:35
Ответы с готовыми решениями:

Извлечь файл из ресурсов
Как можно извлечь файл из ресурсов в путь прописаный в textBox1? Файл .amc

Нужно извлечь звуковой файл из ресурсов
Нужно извлечь звуковой файл (Sound1.wav), который вшит в ресурсы программы. Хотел реализовать...

Извлечь файл из ресурсов в папку приложения
Во внедренные ресурсы добавил файл 1.xlxs. Если при запуске программы, рядом с exe нету файла, то...

Как извлечь исполняемый файл из ресурсов?
В файле ресурсов resX есть исполняемый файл, как его извлечь??

3
Почетный модератор
Эксперт .NET
8722 / 3674 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
08.06.2011, 16:10 2
Casper-SC, ничего странного в коде не замечаешь? ) Массив то ты объявил нужного размера, а кто его заполнять будет перед записью в файл?

p.s. Зачем FileMode.CreateNew? Если файл будет существовать, то вывалится Exception, оно тебе нужно? Или это по логике надо?
1
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
08.06.2011, 16:42  [ТС] 3
Я вообще не заметил одной детали. Я в массив байт вообще ничего не пишу. А пишу в файл пустой массив. База данных Access будет копироваться куда надо при первом запуске приложения. А там уже все локальные данные буду хранить в ней.

Вот рабочий код (знаю, можно приспособить под загрузку любого ресурса, это тестовый проект пока):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private void CopyDatabaseFromResource(String destinationFullFileName)
        {
            Uri uri = new Uri(@"pack://application:,,,/Resources/Data.accdb", UriKind.Absolute);
 
            Stream stream = Application.GetResourceStream(uri).Stream;
            byte[] byteResource = new byte[stream.Length];
 
            using (BinaryReader binReader = new BinaryReader(stream))
            {
                binReader.Read(byteResource, 0, byteResource.Length);
            }
 
            using (FileStream fs = new FileStream(destinationFullFileName, FileMode.CreateNew, FileAccess.Write))
            {
                fs.Write(byteResource, 0, byteResource.Length);
            }
        }
Добавлено через 37 секунд
Кстати я после отправки своего сообщения прочитал то, что серыми буквами написанно =)

Добавлено через 1 минуту
Цитата Сообщение от SSTREGG Посмотреть сообщение
p.s. Зачем FileMode.CreateNew? Если файл будет существовать, то вывалится Exception, оно тебе нужно? Или это по логике надо?
Ну скажем вот часть кода тестового проекта:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public partial class MainWindow : Window
    {
        String databaseName = "Database.accdb";
        String fullDatabasePath;
        String connectionString;
 
        public MainWindow()
        {
            InitializeComponent();
            CheckDirectories();
            fullDatabasePath = Path.Combine(GO.AppFolders.AppMainData, databaseName);
            connectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}", fullDatabasePath);
 
            if (!File.Exists(fullDatabasePath))
                CopyDatabaseFromResource(fullDatabasePath);
            Process.Start(GO.AppFolders.AppMainData);
        }
    //.....................
    }
0
0 / 0 / 0
Регистрация: 08.02.2015
Сообщений: 5
15.05.2017, 13:20 4

так проще
0
15.05.2017, 13:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2017, 13:20
Помогаю со студенческими работами здесь

Извлечь из ресурсов exe-файл на диск
Вобщем не обходимо в файл ресурсов загружать файлы *.exe и выгружать в папку как готовый файл exe...

Как извлечь файл(битмап) из ресурсов программы?
Пишу на Visual Studio 2017 Имеется .jpg файл хранимый в ресурсах, после компиляции видно что он...

Как извлечь программно файл из ресурсов Nsf
Доброго времени суток, коллеги! Если кто-нибудь знает, как можно извлечь на диск файл из...

1 файл ресурсов на 2 приложения в приложении MFC
Всем доброго времени суток! Такой вопрос: возможно ли сделать 1 файл ресурсов (строки на разных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru