Russian Qt Forum
Ноябрь 24, 2024, 09:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: проблемы с NTFS stream - Qt4.2.2  (Прочитано 5638 раз)
Joe
Гость
« : Февраль 13, 2007, 16:20 »

Обнаружил неприятную особенность при работе с NTFS-streams - при попытке открыть с помощью QFile для WriteOnly в основной поток в файле - дополнительные стримы затираются нафиг. Это вообще-то безобразиё и очень грустно. Может там не в курсе о такой фиче в виндах?
Записан
WW
Гость
« Ответ #1 : Февраль 14, 2007, 13:35 »

Это чисто виндусовая фича и к кросплатформенности не имеет отношения. Используй WinAPI для этого файла. Но потеряешь переносимость. Если она для тебя важна.
Записан
Joe
Гость
« Ответ #2 : Февраль 14, 2007, 20:02 »

спасибо блин за содержательный и развёрнутый ответ, а то я не в курсе был, что это не кросплатформенная фича!
Больше никогда не буду пользовать QT для своих виндовых проектов.
Шутка.
А если по существу - то это серьёзный баг, и кросплатформенность тут ни при чём. Если кросплатформенная библиотека будет требовать от вас сужения области её применимости - значит её писала M$, а не trolltech.
Записан
nova
Гость
« Ответ #3 : Февраль 14, 2007, 21:26 »

А мне вот, после Вашего обсуждения, стало очень интересно что такое NTFS-streams?
И зачем оно надо?
Если Вас не затруднит, объясните!
Записан
Joe
Гость
« Ответ #4 : Февраль 14, 2007, 21:49 »

тут всё просто - файл в NTFS как слоёный пирог - может содержать не только один поток, а под-потоки - они именуются просто добавлением :имяпотока к имени файла. Для некоторых вещей крайне удобное мероприятие, и весьма прозрачно поддерживается операционкой. К примеру, храните в основном потоке описалово данных, а в доп-потоках - ломти данных - тогда не надо при изменении.удалении ломтей переносить куски файла, чтоб место не терялось, или там например при расширении - не сдвигать ничо. Или убить ломоть или новый добавить. Можно по другому - в основном потоке масса информации, а в доп. потоках - метаданные, которые могут потом добавляться/убираться. Я, к примеру, сеттинги для приложений храню там, расточительно немного, но очень удобно, не надо кучу конфигурационных файлов таскать, и не забудет их никто себе закинуть при переносе. Очевидно, что это всё живёт только на NTFS, но это не повод ими не пользоваться, для меня переносимость - не самоцель, а требование проекта.
Записан
nova
Гость
« Ответ #5 : Февраль 15, 2007, 22:51 »

А я понял, это очередной велосипед М$ чтоб сказать что у них новые фичи появились Улыбающийся а у программистов новый г<bs> болячка на одно место Улыбающийся
Это как ы структуре док и других файлов офиса. По сути создается образ "диска" со своим фатомв заголовке и своими функциями для обработки всего ентого Улыбающийся ( смотри структуру DOC файла, там и свой дир , и свой ФАТ присутсствуют. ток называются по другому)
И сам М$ этим не пользуется, поскольку при записи документа старый файл переименовывается в бак, и создается новый, так быстрее Улыбающийся

Если для Вас "переносимость - не самоцель, а требование проекта" то проще и павельнее создавать каталог с неким колличеством файлов/потоков и с ними работать.
Так будет и быстрее ( как в работе так и в написании ) и переносимее Улыбающийся
или изобретать свой вормат вайлов под вашу конкретную задачу, что неизменно преведет к повышению производительности программы и к увеличению времени ее написания Подмигивающий

добавлено спустя:

 Забыл добавить енту фичу еще могут пользовать вирусы, для незаметного цепляния к файлу Улыбающийся
Записан
Tonal
Гость
« Ответ #6 : Февраль 16, 2007, 07:53 »

Вообще-то потоки появились в OS/2 раньше чем в Win-де.
Кроме того, они активно используються в маках (если я не ошибаюсь).
Так что на лицо заговор воротил софтового бизнеса против бедных програмеров! ;-)
Записан
WW
Гость
« Ответ #7 : Февраль 16, 2007, 11:09 »

Joe, если ты файлик со своими данными вдруг положишь на FAT, или клиент, для которого ты пишешь, ну для переноса куда-нить, все твои потоки отвалятся. Винда тебя правда об этом предупредит. И ты получишь гемморой. Ради интереса - попробуй на флешку скин дистр фреймворка .NET. А потом установи.
Записан
yurror
Гость
« Ответ #8 : Февраль 16, 2007, 14:22 »

Ого. не знал что OS/2'овские FS держат потоки. уже хотябы от сюда потоки есть вещь кроссплатформенная.
А вот из мира UNIX прочтите про XFS и поймете что потоки на самом деле кроссплатформенная всчь. и если они не поддерживаются ext* это не повод на них забить.
в баг лист однозначно!

добавлено спустя 3 минуты:

 
Цитата: "nova"

...
 Забыл добавить енту фичу еще могут пользовать вирусы, для незаметного цепляния к файлу Улыбающийся

не такое оно уж и незаметное! если копируешь файл содержащий потоки с NTFS на FAT explorer говорит: "ахтунг! мы кажись что-то потеряли!"
Касперский пятый помоему этим делом страдает навешивает свою инфу в потоках.
Записан
Joe
Гость
« Ответ #9 : Февраль 16, 2007, 19:08 »

...да вообще-то пофиг, будут ли в qt поддерживать потоки и на какой операционке, главное - чтобы он НЕ ПОРТИЛИ файл при работе с ним.

Разговор о нужности оставим, каждый для себя решает, что ему удобно, я же не учу тут никого, заметьте. Я считаю и проверил тестами, что это наиболее подходящий механизм для моёй задачи. точка.

Вообще, я не понял, тут что за такая армия радетелей за кросплатформенную разработку окопаласть, интересно, а это всё практикующие спецы, или просто тупое желание показать на наглядном примере какие умные?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.136 секунд. Запросов: 21.