Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.10;
Скачать: CL | DM;

Вниз

Как сделать виртуальный файл.   Найти похожие ветки 

 
elected ©   (2004-01-30 00:09) [0]

Господа Мастера! Именно Мастреа! (Зотов и другие)
Прошу помощи!!!
Есть Blob в базе данных в нем лежат файлы разных форматов..
Для того чтобы открыть каждый из них мне приходиться записывать blob в поток потом в файл на диск а потом уже открывать его..
Вопрос Как открыть поток не записывая его на диск?
ну или хотябы как сделать так чтобы файл находился только в памяти а к нему уже обращалось приложение?

Пожалуйста помогите и желательно вразумительно с примерами...
Заранее благодарен!


 
Rouse_ ©   (2004-01-30 00:17) [1]

CreateFileMapping ?


 
elected ©   (2004-01-30 00:21) [2]

Я слышал что-то про CreateFileMapping
но вот как это работает ума не приложу
Да и можно ли с помощью этого решить данную проблему ...=-(
Может пример есть ?


 
y-soft ©   (2004-01-30 08:02) [3]

Хмм... Ваш вопрос не имеет универсального ответа

Тут важно, с какими форматами файлов предполагается работать и что с ними надо делать

Суть в том, что при открытии файла система не просто перезаписывает его из диска в память, а еще и производит дополнительную работу. Т.е. при прямой записи в память Вам придется делать эту работу за Windows

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

В некоторых случаях можно облегчить жизнь, записывая в BLOB вместо дискового файла его образ в памяти (но только в некоторых!)

Еще для сокращения накладных расходов можно сохранять в файл, но создавать его с флагом FILE_DELETE_ON_CLOSE и атрибутом FILE_ATTRIBUTE_TEMPORARY, тогда ОС постарается хранить его в памяти...


 
alex_*** ©   (2004-01-30 09:21) [4]

Если blob используется только внутри одного приложения то смысл сохранять в файл? blob.SaveToStream(MemSt) и пользуй этот стреам как хочешь внутри приложения. FileMapping имеет смысл применять когда ты хочешь чтоб этим блобом пользовались другие приложения.



Страницы: 1 вся ветка

Текущий архив: 2004.02.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-29385
Прямой
2004-02-01 22:18
2004.02.10
Надо получить иконку для зарегистрированного в системе файла


1-29454
AlexeyITN
2004-01-29 18:29
2004.02.10
Очень стыдно задавать такое о Combobox-e


3-29249
jocko
2004-01-17 13:01
2004.02.10
Что происходит с транзакцией запущенной на сервере если ADOComman


6-29518
MaD
2003-12-08 13:40
2004.02.10
Обработка входящих сетевых сообщений


1-29423
Viking
2004-01-30 15:04
2004.02.10
Список MDI-Child окон