Форум: "Основная";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];
ВнизКак сделать виртуальный файл. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c