Russian Qt Forum

Qt => Общие вопросы => Тема начата: Joe от Февраль 13, 2007, 16:20



Название: проблемы с NTFS stream - Qt4.2.2
Отправлено: Joe от Февраль 13, 2007, 16:20
Обнаружил неприятную особенность при работе с NTFS-streams - при попытке открыть с помощью QFile для WriteOnly в основной поток в файле - дополнительные стримы затираются нафиг. Это вообще-то безобразиё и очень грустно. Может там не в курсе о такой фиче в виндах?


Название: проблемы с NTFS stream - Qt4.2.2
Отправлено: WW от Февраль 14, 2007, 13:35
Это чисто виндусовая фича и к кросплатформенности не имеет отношения. Используй WinAPI для этого файла. Но потеряешь переносимость. Если она для тебя важна.


Название: проблемы с NTFS stream - Qt4.2.2
Отправлено: Joe от Февраль 14, 2007, 20:02
спасибо блин за содержательный и развёрнутый ответ, а то я не в курсе был, что это не кросплатформенная фича!
Больше никогда не буду пользовать QT для своих виндовых проектов.
Шутка.
А если по существу - то это серьёзный баг, и кросплатформенность тут ни при чём. Если кросплатформенная библиотека будет требовать от вас сужения области её применимости - значит её писала M$, а не trolltech.


Название: проблемы с NTFS stream - Qt4.2.2
Отправлено: nova от Февраль 14, 2007, 21:26
А мне вот, после Вашего обсуждения, стало очень интересно что такое NTFS-streams?
И зачем оно надо?
Если Вас не затруднит, объясните!


Название: проблемы с NTFS stream - Qt4.2.2
Отправлено: Joe от Февраль 14, 2007, 21:49
тут всё просто - файл в NTFS как слоёный пирог - может содержать не только один поток, а под-потоки - они именуются просто добавлением :имяпотока к имени файла. Для некоторых вещей крайне удобное мероприятие, и весьма прозрачно поддерживается операционкой. К примеру, храните в основном потоке описалово данных, а в доп-потоках - ломти данных - тогда не надо при изменении.удалении ломтей переносить куски файла, чтоб место не терялось, или там например при расширении - не сдвигать ничо. Или убить ломоть или новый добавить. Можно по другому - в основном потоке масса информации, а в доп. потоках - метаданные, которые могут потом добавляться/убираться. Я, к примеру, сеттинги для приложений храню там, расточительно немного, но очень удобно, не надо кучу конфигурационных файлов таскать, и не забудет их никто себе закинуть при переносе. Очевидно, что это всё живёт только на NTFS, но это не повод ими не пользоваться, для меня переносимость - не самоцель, а требование проекта.


Название: проблемы с NTFS stream - Qt4.2.2
Отправлено: nova от Февраль 15, 2007, 22:51
А я понял, это очередной велосипед М$ чтоб сказать что у них новые фичи появились :) а у программистов новый г<bs> болячка на одно место :)
Это как ы структуре док и других файлов офиса. По сути создается образ "диска" со своим фатомв заголовке и своими функциями для обработки всего ентого :) ( смотри структуру DOC файла, там и свой дир , и свой ФАТ присутсствуют. ток называются по другому)
И сам М$ этим не пользуется, поскольку при записи документа старый файл переименовывается в бак, и создается новый, так быстрее :)

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

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

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


Название: проблемы с NTFS stream - Qt4.2.2
Отправлено: Tonal от Февраль 16, 2007, 07:53
Вообще-то потоки появились в OS/2 раньше чем в Win-де.
Кроме того, они активно используються в маках (если я не ошибаюсь).
Так что на лицо заговор воротил софтового бизнеса против бедных програмеров! ;-)


Название: проблемы с NTFS stream - Qt4.2.2
Отправлено: WW от Февраль 16, 2007, 11:09
Joe, если ты файлик со своими данными вдруг положишь на FAT, или клиент, для которого ты пишешь, ну для переноса куда-нить, все твои потоки отвалятся. Винда тебя правда об этом предупредит. И ты получишь гемморой. Ради интереса - попробуй на флешку скин дистр фреймворка .NET. А потом установи.


Название: проблемы с NTFS stream - Qt4.2.2
Отправлено: yurror от Февраль 16, 2007, 14:22
Ого. не знал что OS/2'овские FS держат потоки. уже хотябы от сюда потоки есть вещь кроссплатформенная.
А вот из мира UNIX прочтите про XFS и поймете что потоки на самом деле кроссплатформенная всчь. и если они не поддерживаются ext* это не повод на них забить.
в баг лист однозначно!

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

 
Цитата: "nova"

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

не такое оно уж и незаметное! если копируешь файл содержащий потоки с NTFS на FAT explorer говорит: "ахтунг! мы кажись что-то потеряли!"
Касперский пятый помоему этим делом страдает навешивает свою инфу в потоках.


Название: проблемы с NTFS stream - Qt4.2.2
Отправлено: Joe от Февраль 16, 2007, 19:08
...да вообще-то пофиг, будут ли в qt поддерживать потоки и на какой операционке, главное - чтобы он НЕ ПОРТИЛИ файл при работе с ним.

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

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