Изменить атрибуты файла, readonly и прочее |
Здравствуйте, гость ( Вход | Регистрация )
Изменить атрибуты файла, readonly и прочее |
ViGOur |
11.1.2008, 11:46
Сообщение
#1
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Как собственно можно изменить атрибуты файла в Qt?
Например у файла стоит атрибут ReadOnly, нужно его снять, как? |
|
|
Klabush |
11.1.2008, 17:33
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 10.10.2007 Пользователь №: 7 Спасибо сказали: 0 раз(а) Репутация: 0 |
Насчёт атрибута ReadOnly.
Явных методов типа setReadOnly и тому подобных ни у QFile, ни у QFileInfo, ни у аналогичных классов нет. Есть только некие права доступа permission, которые можно получить у QFileInfo или QFile, и установить для QFile. Я экспериментально установил, что у простого readonly файла под виндами с NTFS пермишены равны 0x4444, а у файла не readonly - 0x6666. В хелпе описаны следующие флаги для работы с permission: CODE QFile::ReadOwner 0x4000 The file is readable by the owner of the file. QFile::WriteOwner 0x2000 The file is writable by the owner of the file. QFile::ExeOwner 0x1000 The file is executable by the owner of the file. QFile::ReadUser 0x0400 The file is readable by the user. QFile::WriteUser 0x0200 The file is writable by the user. QFile::ExeUser 0x0100 The file is executable by the user. QFile::ReadGroup 0x0040 The file is readable by the group. QFile::WriteGroup 0x0020 The file is writable by the group. QFile::ExeGroup 0x0010 The file is executable by the group. QFile::ReadOther 0x0004 The file is readable by anyone. QFile::WriteOther 0x0002 The file is writable by anyone. QFile::ExeOther 0x0001 The file is executable by anyone. 0x6666 - это комбинация всех Read- и Write- флагов. Поэтому для снятия атрибута readonly можно применить следующий код: CODE QFile File(FileName); File.setPermissions((((File.permissions() |= QFile::WriteOwner) |= QFile::WriteUser) |= QFile::WriteGroup) |= QFile::WriteOther); Открывать файл перед установкой новых permissions не требуется. Для других файловых систем эти значения используются иначе - тут надо уже смотреть по задаче. Сообщение отредактировал Klabush - 11.1.2008, 17:34 |
|
|
ViGOur |
11.1.2008, 17:45
Сообщение
#3
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
О как, спасибо!
|
|
|
Klabush |
11.1.2008, 17:50
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 10.10.2007 Пользователь №: 7 Спасибо сказали: 0 раз(а) Репутация: 0 |
Можно чуть проще в части использования простых операторов вместо заумных:
CODE File.setPermissions(FileInfo.permissions() | QFile::WriteOwner | QFile::WriteUser | QFile::WriteGroup | QFile::WriteOther); Но ведь мы не ищем лёгких путей, да? |
|
|
Текстовая версия | Сейчас: 26.12.2024, 19:52 |