Open открыть файл


Содержание

Open открыть файл

Открывает файл для чтения или записи.

FileOpen ( «filename» [, mode = 0 ] )

filename Имя файла для открытия.
mode [необязательный] Режим, в котором будет открыт файл. Может быть комбинацией следующих значений:
0 = (по умолчанию) Открыть только для чтения
1 = Открыть только для записи в конец файла
2 = Открыть только для записи в конец файла, удалив предыдущее содержание
8 = Создать структуру папок, если путь к файлу не существует (см. примечания).
16 = Принудительно использовать бинарный режим (см. примечания).
32 = Использовать кодировку Unicode UTF16 Little Endian для чтения и записи. Чтение не перезаписывает существующую BOM.
64 = Использовать кодировку Unicode UTF16 Big Endian для чтения и записи. Чтение не перезаписывает существующую BOM.
128 = Использовать кодировку Unicode UTF8 (с BOM) для чтения и записи. Чтение не перезаписывает существующую BOM.
256 = Использовать кодировку Unicode UTF8 (без BOM) для чтения и записи.
16384 = Если при открытии файла не найдена метка BOM, проверять файл полностью, чтобы определить, является ли он файлом в кодировке UTF8. Если это значение флага не используется, тогда при определении того, является ли файл файлом в кодировке UTF8, будет проверено только начало файла.
Каталог назначения должен существовать (если не используется значение флага ‘8’).
Успех: Возвращает дескриптор файла для использования в других файловых функциях.
Ошибка: Возвращает -1, если произошла ошибка.
  • По окончании работы необходимо освободить ресурсы, выделенные дескриптору с помощью функции FileClose () .
  • Файл может не открыться в зависимости от прав доступа и/или его атрибутов H >FileSetPos () , чтобы обновлять текущую позицию в файле.
  • Файл может быть прочитан как бинарные данные (по байтам), используя FileOpen () с соответствующим флагом. В этом случае длина определяется байтами, а не символами. Если будет прочитано слишком много данных, это приведёт к остановке AutoIt с ошибкой выделения памяти.

$hFile = FileOpen ( «test.txt» , 0 )

; Проверяет, является ли файл открытым, перед тем как использовать функции чтения/записи в файл
If $hFile = — 1 Then
MsgBox ( 4096 , «Ошибка» , «Невозможно открыть файл.» )
Exit
EndIf

; Другой пример, который автоматически создает структуру каталогов
$hFile = FileOpen ( «test.txt» , 10 ) ; который аналогично 2 + 8 (очистить + создать путь к файлу)

If $hFile = — 1 Then
MsgBox ( 4096 , «Ошибка» , «Невозможно открыть файл.» )
Exit
EndIf

Команда OPENFILES — управление открытыми по сети или локально файлами.

Команда OPENFILES используется для получения списка открытых файлов и папок в среде операционных систем Windows XP и старше. Возможно получение списка файлов, открытых удаленно с использованием сетевого доступа, или полного списка, включая файлы и папки, открытые локальными процессами. Кроме того, команда позволяет выполнить отключение сеансов удаленного открытия файлов или каталогов. Для работы с данной командой требуются права администратора ( «Запуск от имени администратора» в среде Windows 7 и старше)

Формат командной строки:

OPENFILES /параметр [аргументы]

/Disconnect — Отключение одного и более открытых файлов.

/Query — Отображение открытых файлов, локально и с сетевого ресурса.

/Local — Включает/отключает отображение локально открытых файлов.

Для получения справки по использованию команды с конкретным параметром используется следующий формат командной строки:

OPENFILES /Disconnect /? — отобразить подсказку по использованию команды OPENFILES с параметром /Disconnect

OPENFILES /Query /? | more — выдать подсказку по использованию параметра /Query в постраничном режиме вывода на экран

OPENFILES /Local /? > D:\oflocal.txt — выдать подсказку по использованию параметра /Local в текстовый файл D:\oflocal.txt

Примеры получения списка открытых файлов

Для управления режимом построения списка открытых файлов используется глобальный переключатель списка объектов (maintain objects list) текущее значение которого можно проверить командой :

Если флаг «построение списка объектов» включен, то команда OPENFILES отображает список файлов и папок, открытых как локально, так и по сети. Для отключения режима отображения списка файлов, открытых локальными процессами, используется команда:

openfiles /local off

Для вступления в силу нового режима построения списка открытых файлов, может потребоваться перезагрузка системы.

Список открытых файлов отображается с использованием команды OPENFILES /Query .

Формат командной строки:

OPENFILES /Query [/S система [/U пользователь [/P [пароль]]]] [/FO формат] [/NH] /V]

/S система — Подключаемый удаленный компьютер.

/U [ \]пользователь — Пользовательский контекст, в котором должна выполняться эта команда.

/P [пароль] — Пароль для этого пользовательского контекста.

/FO формат — Формат, в котором следует отобразить выходной файл. Допустимые форматы: «TABLE»,»LIST»,»CSV».

/NH — Указывает, что строка заголовков столбцов не должна отображаться. Допустимо только для форматов «TABLE», «CSV».

/V — Отображать расширенную информации в результатах.

/? — Вывод справки по использованию.

OPENFILES /Query /? — отобразить справку по использованию команды.

OPENFILES /Query — отобразить список открытых файлов и папок с параметрами по умолчанию.

OPENFILES /Query /FO CSV /NH — отобразить список открытых файлов в формате CSV — полей, разделяемых запятой, без отображения заголовков столбцов ( /NH ).


OPENFILES /Query /FO TABLE /V — отобразить список открытых файлов в виде таблицы (TABLE) с включением дополнительной информации (/V) об имени пользователя и идентификаторе процесса (PID). По умолчанию, используется список в формате таблицы, поэтому параметр /FO TABLE можно не указывать.

OPENFILES /Query /S /U /P — отобразить список открытых файлов на удаленном компьютере, с использованием имени пользователя и пароля, задаваемых в командной строке.

OPENFILES /S SERVER /U mydonain\user1 /P mypass — отобразить список открытых файлов на удаленном компьютере SERVER . Для выполнения команды на удаленном компьютере используется имя пользователя user1 в домене mydomain и пароль mypass . Если имя пользователя и пароль не заданы — используется учетная запись, в контексте которой выполняется команда OPENFILES

OPENFILES /S 192.168.0.1 /U mydonain\user1 /P mypass — то же, что и в предыдущем примере, но вместо имени удаленного компьютера, используется его IP-адрес.

OPENFILES /Query > C:\OpenedFiles.txt — записать результаты выполнения команды в текстовый файл C:\OpenedFiles.txt

Пример списка открытых файлов, полученного по команде OPENFILES /Query :

Список файлов, открытых локально:
———————-

ID
=====
8
48
8
8
668
. . .
Имя процесса
===============
dwm.exe
dwm.exe
taskhost.exe
explorer.exe
explorer.exe

Открыть файл (Путь\исполнимый файл)
==================================
C:\Windows\System32
C:\Windows\System32\ru-RU\dwm.exe.mui
C:\Windows\System32
C:\Windows\System32
C:\Windows\Fonts\StaticCache.dat

ID — уникальный идентификатор открытого файла или папки.

Имя процесса — имя процесса, открывшего файл или папку.

Открыть файл (Путь\исполнимый файл) — очевидно, не самый удачный перевод на русский язык. В данной колонке отображается имя и путь открытого файла или папки.

При использовании параметра /V в таблицу добавляются колонки:

Пользователь — имя пользователя, в контексте учетной записи которого открыт файл.

PID — уникальный идентификатор процесса, который открыл файл. В системе может быть несколько процессов имеющих оно и то же имя исполняемого файла (svchost.exe, cmd.exe и т.п.) однако каждый из них имеет уникальный PID, по значению которого можно выделить конкретный процесс. Пример отображаемой таблицы, полученной при выполнении команды с параметром /V :

ID
====
8
48
8
8
668
Пользователь
============
user1
user1
user1
user1
user1
PID
========
3284
3284
3292
3348
3348
Имя процесса
=============
dwm.exe
dwm.exe
taskhost.exe
explorer.exe
explorer.exe
Открыть файл (Путь\исполнимый файл)
==========================
C:\Windows\System32
C:\Windows\System32\ru-RU\dwm.exe.mui
C:\Windows\System32
C:\Windows\System32
C:\Windows\Fonts\StaticCache.dat

Пример таблицы открытых файлов, при выключенном переключателе построения списка локальных объектов ( параметр /Local OFF ) :

Информация: Флаг «построение списка объектов» должен быть включенным, чтобы видеть открытые локально файлы. Подробнее смотрите Openfiles /?.

ID
======
0
2
4
Пользователь
============
USER1
USER2
USER2
Тип
=======
Windows
Windows
Windows
Открытый файл (Путь\файл)
========================
C:\ERDC.7_64
C:\ERDC.7_64
C:\ERDC.7_64\bootmgr

В случае расширенного отображения данных ( параметр /V ), в таблицу добавляются колонки с именем узла, количеством блокировок при совместном использовании одного и того же файла разными пользователями ( #Locks ) и режим открытия (Чтение, Запись, Запись\Чтение):

Имя узла
========
TEST7
TEST7
ID
======
0
50
Пользователь
============
USER1
USER2
Тип
=======
Windows
Windows
#Locks
======
0
0
Режим открытия
==============
Чтение
Чтение
Открытый файл (Путь\файл)
========================
C:\ERDC.7_64
C:\EFI\microsoft\boot

Принудительное отключение сеансов удаленного открытия файлов

Для отключения файлов и папок, которые были удаленно открыты на общем ресурсе, используется параметр /Disconnect . Необходимо учитывать, что команда OPENFILES не предназначена для полного запрета сетевого доступа к файлам и папкам, а всего лишь выполняет сброс отдельной удаленной сессии.

Формат командной строки:

OPENFILES /Disconnect [/S система [/U пользователь [/P [пароль]]]] <[/ID идентификатор] /A пользователь] [/O режим]>[/OP открытый файл]

/S система — Подключаемый удаленный компьютер.

/U [домен\]пользователь — Пользовательский контекст, в котором должна выполняться эта команда.

/P [пароль] — Пароль для этого пользовательского контекста.

/ID идентификатор] — Отключение всех открытых файлов по идентификатору. Допускается использование подстановочного символа «*».

/A пользователь — Отключение всех открытых файлов указанным в параметре пользователем. Допускается использование «*».

/O режим — Отключение всех открытых файлов, с указанным в параметре режимом. Допустимые значения параметра: Read,Write или Read/Write. Допускается использование подстановочного знака»*».

/OP открытый файл — Отключение всех файлов, открытых указанным в параметре файлом. Допускается использование подстановочного символа «*».

/? — Вывод справки по использованию.

OPENFILES /Disconnect /ID 1 — сбросить подключение к файлу или папке с идентификатором 1

OPENFILES /Disconnect /A user1 — сбросить подключения, созданные пользователем user1 .

OPENFILES /Disconnect /O Read/Write — сбросить подключения, имеющие режим «Чтение\Запись»

OPENFILES /Disconnect /S SERVER /U user1 /P pass1 /ID * — выполнить сброс всех сессий ( /ID * ) на удаленном компьютере с именем SERVER . При подключении к удаленному компьютеру используется имя пользователя user1 и пароль pass1 .

Open открыть файл

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

Начиная с glibc 2.10: _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L До glibc 2.10: _ATFILE_SOURCE


ОПИСАНИЕ

По умолчанию, новый файловый дескриптор остаётся открытым при вызове execve(2) (т. е., флаг FD_CLOEXEC файлового дескриптора, описанный в fcntl(2), изначально сброшен; для изменения поведения по умолчанию можно использовать флаг O_CLOEXEC, он описан далее). Файловое смещение устанавливается на начало файла (см. lseek(2)).

Вызов open() создаёт новое открытое файловое описание — запись в системной таблице открытых файлов. В этой записи хранится смещение и флаги состояния файла (смотрите ниже). Файловый дескриптор — это ссылка на открытое файловое описание; с этой ссылкой ничего не происходит при последующем удалении pathname или переуказании имени на другой файл. Дополнительную информацию об открытых файловых описаниях смотрите в разделе ЗАМЕЧАНИЯ.

Параметр flags должен содержать один из следующих режимов доступа: O_RDONLY (только для чтения), O_WRONLY (только для записи) или O_RDWR (для чтения и записи).

Также в flags можно указывать флаги создания и состояния файла, объединяя их битовой операцией ИЛИ. Флаги создания файла: O_CLOEXEC, O_CREAT, O_DIRECTORY, O_EXCL, O_NOCTTY, O_NOFOLLOW, O_TMPFILE и O_TRUNC. Флаги состояния файла — все оставшиеся, перечислены ниже. Различие между двумя этими группами в том, что флаги состояния можно запросить и (в некоторых случаях) изменить; смотрите fcntl(2).

Полный список флагов создания и флагов состояния файла:

O_APPEND Файл открывается в режиме добавления. Перед каждым вызовом write(2) файловое смещение устанавливается в конец файла, как если бы это делалось с помощью lseek(2). Флаг O_APPEND может приводить к повреждению файлов в файловых системах NFS, если одновременно добавляют данные в файл несколько процессов. Это происходит из-за того, что NFS не поддерживает добавление в файл, поэтому клиентское ядро имитирует такое поведение, но при этом нельзя избежать состязательности процессов. O_ASYNC Включает ввод-вывод, управляемый сигналом: генерирует сигнал (по умолчанию SIGIO, но можно изменить с помощью fcntl(2)), когда становится возможным ввод или вывод для этого файлового дескриптора. Эта возможность доступна только для терминалов, псевдо-терминалов, сокетов, каналов (начиная с Linux 2.6) и FIFO. Подробней смотрите fcntl(2). Также смотрите ДЕФЕКТЫ далее. O_CLOEXEC (начиная с Linux 2.6.23) Устанавливает флаг close-on-exec на новом файловом дескрипторе. Указание данного флага позволяет программе избежать дополнительной операции fcntl(2) F_SETFD для установки флага FD_CLOEXEC.

Заметим, что использование этого флага обязательно для некоторых многонитиевых программ, так как использование отдельной операции fcntl(2) F_SETFD для установки флага FD_CLOEXEC недостаточно для избежания состязательности, когда одна нить открывает файловый дескриптор, а в тоже время другая нить может выполнять fork(2) и execve(2). В зависимости от порядка выполнения, состязательность может привести к тому, что файловый дескриптор, возвращённый open(), будет ненамеренно передан программе, выполняющейся в созданном с помощью fork(2) потомке (такого рода состязательность, в принципе, возможна для любых системных вызовов, создающих файловый дескриптор, у которого должен быть установлен флаг close-on-exec, и различные другие системные вызовы Linux предоставляют эквивалент флагу O_CLOEXEC, чтобы избежать этой проблемы).

O_CREAT Если файл не существует, то он будет создан. Владелец (идентификатор пользователя) файла устанавливается в значение эффективного идентификатора пользователя процесса. Группа (идентификатор группы) устанавливается либо в значение эффективного идентификатора группы процесса, либо в значение идентификатора группы родительского каталога (зависит от типа файловой системы, параметров монтирования и режима родительского каталога; смотрите параметры монтирования bsdgroups и sysvgroups, описанные в mount(8)).

В аргументе mode указывается режим использования, который используется при создании нового файла. Этот параметр должен указываться, если в flags устанавливается O_CREAT или O_TMPFILE; если O_CREAT или O_TMPFILE не указаны, то mode игнорируется. Эффективный режим изменяется согласно umask процесса как обычно: в случае отсутствия списков доступа по умолчанию режим созданного файла будет установлен согласно (mode &

umask). Заметим, что этот режим будет учтён только при последующих обращениях к созданному файлу; вызов open(), создающий файл только для чтения, может вернуть файловый дескриптор доступный на чтение и запись.

Символьные константы, используемые в mode:

S_IRWXU 00700 пользователь (владелец файла) имеет права на чтение, запись и выполнение файла S_IRUSR 00400 пользователь имеет права на чтение файла S_IWUSR 00200 пользователь имеет права на запись в файл S_IXUSR 00100 пользователь имеет права на выполнение файла S_IRWXG 00070 группа имеет права на чтение, запись и выполнение файла S_IRGRP 00040 группа имеет права на чтение файла S_IWGRP 00020 группа имеет права на запись в файл S_IXGRP 00010 группа имеет права на выполнение файла S_IRWXO 00007 все остальные имеют права на чтение, запись и выполнение файла S_IROTH 00004 все остальные имеют права на чтение файла S_IWOTH 00002 все остальные имеют права на запись в файл S_IXOTH 00001 все остальные имеют права на выполнение файла Согласно POSIX, в случае, если в mode указаны другие биты, их воздействие не определено. В Linux для mode также доступны следующие биты: S_ISUID 0004000 бит set-user-ID S_ISGID 0002000 бит set-group-ID bit (см. stat(2)) S_ISVTX 0001000 закрепляющий бит (см. stat(2)) O_DIRECT (начиная с Linux 2.4.10) Попытаться минимизировать влияние кэширования ввода-вывода при чтении и записи в файл. Обычно, это ухудшает производительность, но полезно для особых случаев, например, когда приложение выполняет кэширование самостоятельно. Файловый ввод-вывод выполняется непосредственно в/из буферов пространства пользователя. При флаге O_DIRECT предпринимаются все усилия для синхронной передачи данных, но это не гарантирует, как с флагом O_SYNC, передачу данных и необходимых метаданных. Чтобы гарантировать синхронный ввод-вывод вместе с O_DIRECT нужно использовать O_SYNC. Дальнейшее описание смотрите далее в разделе ЗАМЕЧАНИЯ.

Семантически похожий интерфейс (но устаревший) для блочных устройств описан в raw(8).

O_DIRECTORY Если pathname не является каталогом, то завершить вызов с ошибкой. Этот флаг был добавлен в ядро версии 2.1.126, чтобы избежать проблем с «отказом в обслуживании», если opendir(3) был вызван для канала FIFO или ленточного устройства. O_DSYNC Операции записи файла будут выполнены согласно требованиям целостности синхронизации ввода-вывода data.

К времени возврата из write(2) (и подобных) выходные данные уже переданы в задействованное аппаратное обеспечение вместе со всеми метаданными файла, которые бы потребовались для получения данных (т. е., как если бы за каждым write(2) был выполнен вызов fdatasync(2)). Смотрите ЗАМЕЧАНИЯ далее.

O_EXCL Гарантирует, что вызов создаст файл: если этот флаг указан вместе с O_CREAT и pathname уже существует, то open() завершится с ошибкой.

При использовании обоих флагов символьные ссылки не поддерживаются: если pathname является символьной ссылкой, то open() завершается с ошибкой независимо от того, куда указывает ссылка.

Вообще говоря, поведение с O_EXCL не определено, если этот флаг используется без O_CREAT. Есть одно исключение: в Linux 2.6 и более новых O_EXCL можно использовать без O_CREAT, если pathname указывает на блочное устройство. Если блочное устройство используется в системе (например, смонтировано), то open() завершится с ошибкой EBUSY.

Флаг O_EXCL поддерживается для NFS только, если используется NFSv3 или новее с ядром 2.6 или новее. В средах, где в NFS нет поддержки O_EXCL, программы, которые полагаются на это для выполнения задач блокировок, будут создавать состязательность процессов. Переносимым программам, которым нужно произвести атомарную блокировку файла с помощь файла блокировки, необходимо избегать зависимости от поддержки в NFS флага O_EXCL. В качестве решения можно создать уникальный файл в той же файловой системе (например, добавив имя узла и PID в название), чтобы создать ссылку на файл блокировки с помощью link(2). Если link(2) возвращает 0, то блокировка выполнена. В противном случае используйте stat(2), чтобы убедиться, что количество ссылок на уникальный файл возросло до двух. Это также означает, что блокировка была успешной.

O_LARGEFILE (LFS) Позволяет открывать файлы, чей размер нельзя представить типом off_t (но можно представить типом off64_t). Для получения этого определения должен быть указан макрос _LARGEFILE64_SOURCE (до включения какого-либо заголовочного файла). Установка макроса тестирования возможностей _FILE_OFFSET_BITS в значение 64 (вместо использования O_LARGEFILE) является предпочтительным методом доступа к большим файлам на 32-битных системах (см. feature_test_macros(7)). O_NOATIME (начиная с Linux 2.6.8) Не обновлять время последнего доступа к файлу (st_atime в inode) при его чтении read(2). Этот флаг предназначен для использования в программах индексирования и резервного копирования; он позволяет значительно сократить количество обращений к диску. Флаг может быть не эффективен на некоторых файловых системах. Например, на NFS, где запись времени доступа выполняется сервером. O_NOCTTY Если pathname указывает на терминальное устройство (см. tty(4)), то оно не станет управляющим терминалом процесса, даже если процесс такового не имеет. O_NOFOLLOW Если pathname является символьной ссылкой, то открытие завершится неудачно. Это расширение FreeBSD, которое было добавлено в Linux версии 2.1.126. Все прочие символьные ссылки в имени будут обработаны как обычно. Также смотрите описание O_PATH далее. O_NONBLOCK или O_NDELAY Если возможно, файл открывается в неблокирующем режиме. Ни open(), ни другие последующие операции над возвращаемым дескриптором файла не заставят вызывающий процесс ждать.

Обратите внимание, что этот флаг не оказывает влияния на обычные файлы и блочные устройства, то есть операции ввода-вывода будут блокироваться на короткое время, если будет запрошено активность устройства, вне зависимости от установки флага O_NONBLOCK. Семантика O_NONBLOCK может быть когда-нибудь реализована, поэтому приложения не должны зависеть от блокировок при указании данного флага для обычных файлов и блочных устройств.

Для работы с каналами FIFO также смотрите fifo(7). Обсуждение влияния O_NONBLOCK в сочетании с обязательной файловой блокировкой или арендой (lease) смотрите в fcntl(2).

O_PATH (начиная с Linux 2.6.39) Получить файловый дескриптор, который можно использовать для двух целей: для указания положения в дереве файловой системы и для выполнения операций, работающих исключительно на уровне файловых дескрипторов. Сам файл не открывается и другие файловые операции (например, read(2), write(2), fchmod(2), fchown(2), fgetxattr(2), mmap(2)) завершатся с ошибкой EBADF.

Следующие операции могут выполняться над полученным файловым дескриптором:

* close(2); fchdir(2) (начиная с Linux 3.5); fstat(2) (начиная с Linux 3.6). * Создание дубликата файлового дескриптора (dup(2), fcntl(2) F_DUPFD и т.д.). * Получение и установка флагов файловых дескрипторов (fcntl(2) F_GETFD и F_SETFD). * Получение флагов состояния открытого файла с помощью операции fcntl(2) F_GETFL: в возвращаемые флаги будет включён бит O_PATH. * Передача файлового дескриптора в аргументе dirfd для openat(2) и других системных вызовов «*at()». К ним относится linkat(2) с флагом AT_EMPTY_PATH (или через procfs с помощью AT_SYMLINK_FOLLOW) даже, если файл не является каталогом. * Передача файлового дескриптора в другой процесс через доменный сокет UNIX (смотрите SCM_RIGHTS в unix(7)). Если O_PATH указан в flags, то биты флагов, отличные от O_CLOEXEC, O_DIRECTORYи O_NOFOLLOW, игнорируются.

Если pathname является символьной ссылкой и также указан флаг O_NOFOLLOW, то вызов возвращает файловый дескриптор, указывающий на символьную ссылку. Этот файловый дескриптор можно использовать в аргументе dirfd для вызовов fchownat(2), fstatat(2), linkat(2) и readlinkat(2) с пустым именем пути, чтобы выполнить операцию над символьной ссылкой.

O_SYNC Операции записи файла будут выполнены согласно требованиям целостности синхронизации ввода-вывода file (по сравнению с целостностью синхронизации ввода-вывода data, предоставляемой O_DSYNC).

К времени возврата из write(2) (и подобных) выходные данные и все метаданные файла уже переданы в задействованное аппаратное обеспечение (т. е., как если бы за каждым write(2) был выполнен вызов fsync(2)). Смотрите ЗАМЕЧАНИЯ далее.

O_TMPFILE (начиная с Linux 3.11) Создание безымянного временного файла. В аргументе pathname указывается каталог; безымянная inode будет создана в файловой системе этого каталога. Всё записанное в полученный файл будет потеряно при закрытии последнего файлового дескриптора, если файлу не будет назначено имя.

Флаг O_TMPFILE должен быть указан вместе с O_RDWR или O_WRONLY и, необязательно, O_EXCL. Если O_EXCL не указан, то можно использовать linkat(2) для ссылки на временный файл в файловой системе, сделав его постоянным с помощью кода:

В этом случае аргументом mode у open() определяется режим доступа к файлу как с O_CREAT.

Указание O_EXCL вместе с O_TMPFILE отключает возможность создания символьной ссылки в файловой системе указанным ранее способом (заметим, что назначение O_EXCL в этом случае отличается от обычного O_EXCL).

Есть два основных случая использования O_TMPFILE:

* Дополнительное свойство tmpfile(3): свободное от состязательности создание временных файлов, которые: автоматически удаляются при закрытии; недоступны по имени; не подвержены атаке через символьные ссылки; не требуют от вызывающего подбирать уникальное имя. * Создание файла, который изначально не видим, и который затем заполняется данными и позволяет изменять атрибуты в файловой системе (chown(2), chmod(2), fsetxattr(2) и т. д.) до автоматического встраивания в файловую систему в полностью законченном виде (с помощью linkat(2) как описано ранее). Для O_TMPFILE требуется поддержка в файловой системе; она есть только в нескольких файловых системах Linux. В первой реализации поддержка предоставлялась в файловых системах ext2, ext3, ext4, UDF, Minix и shmem. Поддержка в XFS добавлена в Linux 3.15. O_TRUNC Если файл уже существует и является обычным файлом и режим доступа позволяет писать в этот файл (т.е. установлен флаг O_RDWR или O_WRONLY), то его длина будет урезана до нуля. Если файл является FIFO или терминальным устройством, то этот флаг игнорируется. В других случаях действие флага O_TRUNC не определено.

creat()

openat()

Если в pathname задан относительный путь, то он считается относительно каталога, на который ссылается файловый дескриптор dirfd (а не относительно текущего рабочего каталога вызывающего процесса, как это делается в open()).

Если в pathname задан относительный путь и dirfd равно специальному значению AT_FDCWD, то pathname рассматривается относительно текущего рабочего каталога вызывающего процесса (как open()).


Если в pathname задан абсолютный путь, то dirfd игнорируется.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

ОШИБКИ

В openat() дополнительно могут возникнуть следующие ошибки:

EBADF dirfd не является правильным файловым дескриптором. ENOTDIR Значение pathname содержит относительный путь и dirfd содержит файловый дескриптор, указывающий на файл, а не на каталог.

ВЕРСИИ

СООТВЕТСТВИЕ СТАНДАРТАМ

Флаги O_DIRECT, O_NOATIME, O_PATH и O_TMPFILE есть только в Linux. Для их определения может потребоваться задать _GNU_SOURCE.

Флаги O_CLOEXEC, O_DIRECTORY и O_NOFOLLOW не указаны в POSIX.1-2001, но есть в POSIX.1-2008. Начиная с glibc 2.12, их определения можно получить определив или _POSIX_C_SOURCE со значением большим и равным 200809L, или _XOPEN_SOURCE со значением большим и равным 700. В glibc 2.11 и старее их определения можно получить определив _GNU_SOURCE.

Как было отмечено в feature_test_macros(7), такие макросы тестирования свойств как _POSIX_C_SOURCE, _XOPEN_SOURCE и _GNU_SOURCE, должны быть определены до включения любых заголовочных файлов.

ЗАМЕЧАНИЯ

Результат работы комбинации флагов O_RDONLY | O_TRUNC в разных реализациях разный (нигде не определён). Во многих системах файл усекается.

Заметим, что open() может открывать специальные файлы устройств, но creat() не может их создавать; вместо этого используйте mknod(2).

Если файл только что был создан, его поля st_atime, st_ctime, st_mtime (время последнего доступа, последней смены состояния и последнего изменения, соответственно; см. stat(2)) устанавливаются в значение текущего времени, и оно совпадает с полями st_ctime и st_mtime родительского каталога. Или же, если файл изменяется из-за установленного флага O_TRUNC, то его поля st_ctime и st_mtime устанавливаются в значение текущего времени.

Открытые файловые описания

При создании копии файлового дескриптора (с помощью dup(2) или подобного вызова), копия ссылается на то же открытое файловое описание что и изначальный файловый дескриптор, и, следовательно, два файловых дескриптора имеют общее файловое смещение и флаги состояния файла. Такая общность может также быть у двух процессов: процесс-потомок, создаваемый fork(2), наследует копии файловых дескрипторов своего родителя и эти копии ссылаются на те же открытые файловые описания.

При каждом open(2) файла создаётся новое файловое описание; таким образом, может быть несколько открытых файловых описаний, соответствующих inode файла.

Синхронизированный ввод-вывод

В Linux реализованы O_SYNC и O_DSYNC, но не O_RSYNC (немного некорректно, в glibc определён O_RSYNC со значением как у O_SYNC).

Флаг O_SYNC предоставляет выполнение целостного синхронизованного ввод-вывода file, то есть операции записи передают данные и все связанные метаданные в задействованное аппаратное обеспечение. Флаг O_DSYNC предоставляет выполнение целостного синхронизованного ввод-вывода data, то есть операции записи передают данные в задействованное аппаратное обеспечение, но обновляются только те метаданные, которые требуются для выполнения последующего чтения. Полнота целостности данных может сократить количество дисковых операций, которые требуются приложениям, не требующим гарантий целостности файлов.

Чтобы понять разницу между двумя типами обеспечения целостности рассмотрим две части метаданных файла: метка времени последнего изменения файла (st_mtime) и длину файла. Все операции записи обновляют метку времени последнего изменения файла, но только при записи, которая добавляет данные в конец файла, будет изменена длина файла. Метка времени последнего изменения файла не требуется для корректного чтения файла, чего не скажешь о длине. Таким образом, O_DSYNC гарантирует только запись обновлений о метаданных длины файла (в то время как O_SYNC также всегда записывает метаданные о метки времени последнего изменения файла).

До Linux версии 2.6.33 в Linux реализован только флаг O_SYNC для open(). Однако, когда этот флаг указан, большинство файловых систем в действительности предоставляют эквивалент выполнения целостности синхронизированного ввода-вывода data (т. е., на самом деле O_SYNC был реализован как эквивалент O_DSYNC).

Начиная с Linux 2.6.33, предоставляет корректная поддержка O_SYNC. Однако для обеспечения обратной двоичной совместимости, O_DSYNC был определён с тем же значением что и старый O_SYNC, а O_SYNC был определён как новое значение флага (два бита), которое включает значение флага O_DSYNC. Это позволяет приложениям, скомпилированным с новыми заголовочными файлами получать, по крайней мере, семантику O_DSYNC ядер pre-2.6.33.

В файловых системах NFS с включённым проецированием UID, open() может вернуть файловый дескриптор, но, например, запросы read(2) будут отклонены с ошибкой EACCES. Это происходит из-за того, что клиент выполняет open() проверяя одни права, но сервер выполняет проецирование UID только при запросах чтения и записи.

Режим доступа к файлу

В Linux зарезервирован специальный нестандартный режим доступа 3 (11 двоичное) в flags, при котором: проверяются права на чтение и запись к файлу и возвращается файловый дескриптор, который не может использоваться для чтения или записи. Данный нестандартный режим доступа используется некоторыми драйверами Linux для получения файлового дескриптора, который будет использоваться в ioctl(2) только для специальных операций с устройством.

Обоснование openat() и остального программного интерфейса файлового дескриптора каталога

Во-первых, openat() позволяет приложению избежать условий состязательности, которые могут возникнуть, когда open() открывает файлы в каталогах, отличных от текущего рабочего каталога. Состязательность возникает из-за того, что один из компонентов префикса каталога, указанного open(), может измениться одновременно с вызовом open(). Например, предположим, что мы хотим создать файл path/to/xxx.dep и существует файл path/to/xxx. Проблема находится между шагами проверки существования и созданием файла, указываемые path или to (которые могут быть символическими ссылками) места могут измениться. Этой состязательности можно избежать открыв файловый дескриптор каталога назначения, и затем указав этот файловый дескриптор в аргументе dirfd вызова (скажем) fstatat(2) и openat().

Во-вторых, openat() позволяет реализовать отдельный «текущий рабочий каталог» для каждой нити посредством файлового дескриптора, сопровождаемого приложением. Эта возможность также может быть получена с использованием /proc/self/fd/dirfd, но менее эффективно.

O_DIRECT

Флаг O_DIRECT может накладывать ограничения по выравниванию на длину и адрес буфера пользовательского пространства и смещения файла при вводе-выводе. В Linux ограничения по выравниванию различны у разных файловых систем и версий ядра, и даже могут отсутствовать. Однако сейчас не существует независимого от файловой системы интерфейса приложения для выявления этих ограничений на определённый файл или файловую систему. Некоторые файловые системы предоставляют свои собственные интерфейсы для этого, например, операция XFS_IOC_DIOINFO в xfsctl(3).

В Linux 2.4 размеры передачи, выравнивание пользовательского буфера и файлового смещения должны быть кратны размеру логического блока файловой системы. Начиная с Linux 2.6 достаточно выравнивания по 512-байтовой границе. Размер логического блока можно определить с помощью ioctl(2) и операции BLKSSZGET или с помощью команды:

Ввод-вывод с O_DIRECT никогда не должен запускаться одновременно с системным вызовом fork(2), если буфер памяти является закрытым отображением (т. е., любым отображениям, созданным с помощью mmap(2) с флагом MAP_PRIVATE; к ним относится память, выделенная под кучу и статически выделенные буферы). Любой подобный ввод-вывод, предоставленный через асинхронный интерфейс или из другой нити процесса, должен выполниться полностью до вызова fork(2). В противном случае, может произойти повреждение данных и непредсказуемое поведение в процессе родителя и потомка.Данное ограничение не действует, если буфер памяти для ввода-вывода с O_DIRECT был создан с помощью shmat(2) или mmap(2) с флагом MAP_SHARED. И при этом это ограничение не действует, когда буфер памяти был помечен (advised) как MADV_DONTFORK с помощью madvise(2), если точно известно, что он не будет доступен потомку после fork(2).

Флаг O_DIRECT появился в SGI IRIX, где ограничения на выравнивание подобны Linux 2.4. В IRIX также есть вызов fcntl(2) для запроса значений соответствующего выравнивания и размеров. В FreeBSD 4.x появился флаг с таким же именем, но без ограничений на выравнивание.

Поддержка O_DIRECT добавлена в ядро Linux версии 2.4.10. Более старые ядра Linux просто игнорируют этот флаг. В некоторых файловых системах этот флаг может быть не реализован и open() завершится с ошибкой EINVAL при его использовании.

Приложения должны избегать смешивания O_DIRECT и обычных операций ввода-вывода в один файл и особенно перекрывать байтовые области. Даже когда файловая система правильно обрабатывает проблемы с когерентностью в такой ситуации, общая пропускная способность ввода-вывода, вероятно, будет медленнее чем при использовании какого-то одного из этих режимов отдельно. Аналогично приложения должны избегать смешивания mmap(2) и прямого ввода-вывода для одинаковых файлов.

Поведение O_DIRECT на NFS отличается от локальных файловых систем. Старые ядра и ядра, настроенные определёнными способами, могут не поддерживать такую комбинацию. Протокол NFS не поддерживает передачу флага на сервер, поэтому ввод-вывод с O_DIRECT будет пропускать кэширование страниц только на клиенте; сервер всё равно может выполнить кэширование ввода-вывода. Клиент просит сервер выполнять операции ввода-вывода синхронно для сохранения синхронной семантики O_DIRECT. Некоторые серверы будут выполнять это плохо при определённых условиях, особенно если размер данных ввода-вывод невелик. Некоторые серверы также могут быть настроены на отправку ложного ответа клиентам о том, что ввод-вывод произведён на носитель; это позволяет избежать потери производительности, но есть риск потери целостности данных в случае проблем с электропитанием сервера. В Linux клиент NFS не устанавливает ограничений по выравниванию при вводе-выводе с O_DIRECT.

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

«The thing that has always disturbed me about O_DIRECT is that the whole interface is just stupid, and was probably designed by a deranged monkey on some serious mind-controlling substances.» — Linus (Меня всегда беспокоило кое-что относительно O_DIRECT — то, что вообще в целом этот интерфейс просто идиотичен. Создаётся впечатление, что он как-бы был создан сумасшедшей обезьяной под веществами.)


ДЕФЕКТЫ

Для определения поддержки ядром O_TMPFILE нужно проверять два различных кода ошибок — EISDIR и ENOENT.

При указании флагов O_CREAT и O_DIRECTORY в flags, и при этом указанный в pathname файл не существует, open() создаст обычный файл (то есть флаг O_DIRECTORY будет проигнорирован).

Чем открыть файл

Чем открыть тот или иной файл? Такой вопрос возникает, когда мы встречаемся с незнакомым расширением файла. Ниже я перечислю множество таких форматов и укажу какой программой их открыть, а также что они из себя представляют. Но прежде создам небольшую памятку.

Неизвестно расширение файла
Если вы не знаете какое расширение у вашего файла, вам нужное сделать следующее. Зайдите в Панель Управления и найдите пункт Параметры папок. В нем переходим во вкладку Вид и находим пункт Скрывать расширения для зарегистрированных файлов. Снимаем галочку с этого пункта и теперь в конце каждого файла будет указан формат файла. Он обозначается после точки. Пример: файл.txt. Здесь формат — txt.

Как быстрее найти формат на этой странице
Чтобы долго не листать и искать формат, просто нажмите CTRL+F и введите формат.

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

Тройка полезных онлайн-сервисов

Возможно и вам пригодятся эти сервисы, которыми я пользуюсь хоть и не часто, зато верно.

Справочник по типам файлов open-file.ru.

Этот русско-язычный сайт содержит огромный каталог расширений файлов и описание форматов. К этому сервису приходится обращаться всякий раз, как только на почту приходит документ с экзотическим (незнакомым) расширением без описания, чем открывать этот файл.

На сегодняшний день в базе данных порядка 2000 уникальных расширений файлов. Поскольку на одно расширение файла может приходиться несколько форматов файлов, поддерживаемых разными приложениями, то количество форматов в каталоге несколько больше.

Интерфейс вполне понятный, хотя и аскетичный, безо всякого украшательства. Как принято в электронном каталоге, вводим в строку поиска волнующее нас расширение файла, жмем Enter и получаем табличку с информацией об этом расширении:

  • Описание файла на русском
  • Описание файла на английском
  • Тип файла
  • Подробное описание
  • Как, чем открыть файл

По-моему, вполне достаточная и исчерпывающая информация.

Проверка файлов FileCheck.ru

Filecheck.ru — это одно из самых быстрорастущих сообществ, где обсуждаются файлы Windows. Этот сайт был создан Дьяконовой Еленой и Александром Ньюбером. База данных filecheck.ru содержит информацию и рейтинг многих тысяч файлов.

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

Файлам проставляется рейтинг на основании технического анализа по их свойствам таким, как внедренные скрытые функции (например, мониторинг клавиатуры, автовход, надзор за браузером или манипулирование) и типам процессов — видимое окно, программа находящаяся в трее, DLL, плагины к IE, сервисы, и другое.

Оценка безопасности указывает на вероятность того, что процесс может быть потенциально вредоносным, представлять собой программу-шпион, троян или быть кейлоггером.

Руководство по оценке файла:

Пользоваться сервисом также просто: кроме строки за задания поиска, есть еще и список часто запрашиваемых файлов.

Информация для файлов, принадлежащих системе очень подробная. Кроме описания и назначения файла, указывается его размер и стандартное месторасположение. Дополнительно (что очень важно!) указываются варианты маскировки вредоносных программ под этот системный файл, где обычно прячутся вредоносные клоны и как они себя ведут.

Пользуйтесь этим сервисом, когда просматриваете с помощью диспетчера процессов запущенные процессы, или, если вдруг решили удалить какой-то файл из автозагрузки.

Бесплатный онлайн-конвертер файлов online-convert.com

Этот бесплатный онлайн конвертер файлов, совсем недавно ставший русскоязычным, позволяет конвертировать файлы разного назначения. Кроме привычных конвертера аудио файлов и видео-конвертера и конвертера форматов картинок, здесь же есть конвертер документов (в том числе и столь востребованный конвертер docx в doc), здесь есть конвертер форматов электронных книг и архивов.

Пользоваться, опять же, просто: выбираем целевой формат, нас перебрасывают на страничку обработки этого формата. Там мы загружаем свой файл. Если нужно, оставляем свой email, чтобы сконвертированный файл пришел нам на почтовый ящик, хотя результат можно просмотреть прямо здесь.

Есть одно но… Если название файла на русском языке, то все русские буквы буду заменены на подчеркивание. А во всем остальном — быстро и удобно. К тому же и название сайта легко запоминается!

Открываем любые файлы

Файлы с незнакомыми расширениями встречаются не каждый день. Однако бывают ситуации, когда именно их очень нужно открыть. Расскажем, как определить формат данных, и предоставит необходимые приложения для работы с ними.

При виде файла c непонятным расширением многие сразу задаются вопросом, каким ПО его можно открыть. При этом встроенная функция системы Windows «Найти программу в Интернете», как правило, ничего не дает. Подобные ситуации возникают регулярно: например, коллега присылает вам 3D-модель для оценки, забыв, что у вас нет соответствующего приложения для просмотра, или друг передает фотоальбом, запакованный редким архивным форматом. Если файл не открывается автоматически двойным кликом, в подавляющем большинстве случаев это означает, что на компьютере нет программы, которая могла бы его распознать и обработать. Перед пользователем встает задача узнать формат данных и определить, какая программа нужна для открытия такого файла. Получить информацию о типе файла можно с помощью несложных изменений, которые следует внести в настройки операционной системы вашего компьютера. Если после этого все еще неясно, что за файл перед вами, можно воспользоваться справочными инструментами, в том числе онлайн-сервисами. Еще один способ справиться с неподдающимся файлом — открыть его посредством универсального инструмента, программы-просмотрщика. Если и в этом случае отобразить файл не удается, остается последний вариант — конвертировать его в подходящий формат. В статье мы рассмотрим все эти способы, направленные на борьбу с неизвестностью, познакомим с малораспространенными файлами, а также расскажем, как поступить, если доставшийся вам файл оказался поврежденным.

Каждому файлу — своя программа

Определить тип файла можно просто по его расширению, после чего станет понятно и его предназначение.

Заставляем систему отображать расширения

По умолчанию в Проводнике Windows расширения файлов могут быть скрыты. При этом слева от каждого из них отображается иконка программы, способная его открыть, если такая программа определена. Например, файл вида article.doc будет представлен в списке как «article» и помечен пиктограммой пакета Microsoft Word. Чтобы стали отображаться расширения файлов, выберите последовательно пункты «Пуск | Панель управления | Оформление и персонализация | Параметры папок». В открывшемся окне перейдите на вкладку «Вид», уберите флажок напротив пункта «Скрывать расширения для зарегистрированных типов файлов» и нажмите на «Применить».

Выбираем приложение

Чтобы увидеть, какая программа будет обрабатывать файл по умолчанию, нужно кликнуть по нему правой кнопкой мыши и выбрать в контекстном меню пункт «Свойства». В открывшемся окне на вкладке «Общие» вы увидите тип файла и его расширение, а также утилиту, которая назначена ответственной за открытие данных в таком формате. Если нужно другое приложение, кликните по «Изменить». Откроется список рекомендуемых программ. Если ни одна из них вас не устраивает, нажмите кнопку «Обзор», в появившемся окне зайдите в папку, соответствующую нужной утилите, и кликните по исполняемому файлу. Как правило, это имя приложения с расширением EXE.


Определяем тип файла

Какая программа соответствует тому или иному формату, можно узнать с помощью онлайн-сервиса OpenWith.org. На его страницах представлена краткая информация о файлах разных типов. Для поиска конкретных сведений можно воспользоваться окном поиска, указав в нем расширение. Кроме того, многочисленные расширения сгруппированы на сайте в алфавитный каталог. Достаточно выбрать первый символ расширения — OpenWith.org представит список вариантов, начинающихся с этой буквы. Отдельно существует классификация форматов по их предназначению: аудиоданные, документы, плагины и многое другое. Интересно, что для каждого расширения сервис сразу предлагает одно или несколько приложений. Правда, сайт не локализован, и все комментарии к программам и файлам представлены на английском языке.

Если вы часто сталкиваетесь с данными в незнакомых форматах, с сайта OpenWith.org можно скачать небольшую бесплатную утилиту, которая подскажет, какой программой можно открыть тот или иной файл. Приложение OpenWith предлагает простую и удобную функцию: после его установки в контекстном меню появляется пункт, помогающий определить ПО для запуска конкретного файла.

Встроенные средства Windows могут подсказать тип файла

В операционной системе можно назначить программу, которая займется этим типом данных

Утилита OpenWith определит программу, с помощью которой следует открыть указанный файл

В онлайн-сервисе OpenWith.org типы файлов разбиты на категории, что облегчает поиск соответствующей программы

Конвертируем в нужный формат

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

Векторные изображения

С помощью универсального бесплатного инструмента UniConvertor вы можете преобразовывать файлы из одного векторного формата в другой. В плане импорта программа поддерживает такие расширения, как CDR, CDT, CCX, CDRX, CMX (CorelDRAW), AI, EPS, PLT, DXF, SVG и другие. Экспорт осуществляется в форматы AI, SVG, SK, SK1, CGM, WMF, PDF, PS. Утилита доступна в версиях для Windows и Linux.

Растровая графика

Программа Free Image Convert and Resize занимает мало места на жестком диске, но предлагает функции по конвертированию и преобразованию растровых изображений, в том числе в пакетном режиме. Поддерживаются следующие форматы файлов: JPEG, PNG, BMP, GIF, TGA, PDF (последний — только для экспорта).

Видеофайлы

Мощный бесплатный инструмент Hamster Video Converter обеспечивает преобразование видеофайлов из одного формата в другой. Поддерживается конвертирование в 3GP, MP3, MP4, AVI, MPG, WMV, MPEG, FLV, HD, DVD, M2TS и т. д. Доступна пакетная обработка.

Аудиоданные

Бесплатная программа Hamster Free Audio Converter от того же производителя предлагает конвертирование аудио между форматами AIFF, OGG, WMA, MP3, MP2, AC3, AMR, FLAC, WAV, ACC, COV, RM. На сайте производителя также имеются преобразователи архивных форматов и электронных книг.

Используем онлайн-сервисы

Не всегда есть возможность установить программу-конвертер на ПК — в этом случае помогут интернет-ресурсы для преобразования документов.

Zamzar

Сервис zamzar.com может конвертировать файлы размером до 1 Гбайт. Список поддерживаемых форматов насчитывает несколько десятков (музыка — AAC, FLAC, OGG, WMA и пр., видео — 3GP, FLV, MPG и пр., текст — DOC, KEY, ODS и пр.). Однако при работе с документами могут возникнуть проблемы с кириллическими файлами.

FreePDFconvert

Ресурс freepdfconvert.com поможет преобразовывать файлы DOC, XLS и PPT, изображения, веб-страницы и другие типы в PDF-файлы. Кроме того, сервис умеет выполнять обратную конвертацию PDF в данные формата DOC, XLS или RTF. Общий список поддерживаемых разрешений приближается к 70. Однако сервис имеет ограничения: в месяц позволяется обрабатывать не более 15 файлов.

Бесплатная утилита UniConvertor поможет быстро преобразовывать файлы векторных форматов в пакетном режиме

Free Image Convert and Resize наделена простейшими функциями конвертирования и изменения размера изображений

Для конвертации видео- и аудиофайлов удобно использовать программы Hamster со встроенными кодеками и набором пресетов

Онлайн-ресурсы Zamzar (верхний скриншот) и FreePDFConvert — универсальные конвертеры с ограничением по объему

Просмотр любого файла

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

Программа Free Opener (freeopener.com, бесплатно) дает возможность просматривать файлы более 80 разных форматов. Ее смело можно назвать универсальным инструментом: утилита позволяет открыть файлы офисных пакетов, видео, изображения, архивы и PDF-документы. В настройках можно задать подсветку синтаксиса для текстовых файлов или файлов с кодами программ.

С помощью Ultimate File Viewer (ultimatefileviewer.com, есть trial-версия) можно не только просматривать файлы разных форматов, но и выполнять с ними дополнительные действия — например, копировать или переносить в разные папки, отправлять по электронной почте. Дополнительным преимуществом является поиск по содержимому файла.

Программа ICE Book Reader Professional является универсальным инструментом для чтения файлов электронных книг и различного рода текстовых документов, к которым относятся DOC, TXT, HTML, PDF и многие другие.

Бесплатная утилита Free Viewer открывает файлы разных форматов, отображая дополнительно окно с информацией. С ее помощью можно точно узнать, какая программа необходима для открытия того или иного файла. Кроме того, в приложении имеется встроенный конвертер, и оно позволяет установить ассоциацию для файлов на уровне ОС.

Небольшая бесплатная программа XnView послужит удобным просмотрщиком графических файлов. К тому же в ней можно выполнять элементарные операции редактирования картинок (вставка надписи, поворот, применение эффектов). Всего утилита поддерживает более 400 различных расширений и позволяет конвертировать их более чем в 50 форматов. Среди дополнительных возможностей программы — работа со сканером, создание скриншотов, запись рисунков на компакт-диск.

Если данные повреждены

В некоторых случаях при попытке открыть файл пользователь может столкнуться с сообщением, что этот объект поврежден. Данные можно попытаться восстановить. Например, в случае с документом Microsoft Word в окне «Открытие документа» можно, выбрав файл, воспользоваться пунктом «Открыть и восстановить». Таким же способом можно попытаться «воскресить» файлы Excel и других приложений офисного пакета. В остальных ситуациях для решения задачи можно воспользоваться другими утилитами. Например, коммерческая программа Word Recovery Toolbox поможет восстановить файлы форматов DOC, DOCX и RTF. Можно также задействовать бесплатный онлайн-сервис online.officerecovery.com/ru, однако в этом случае нужно подумать, стоит ли доверять конфиденциальные документы открытому ресурсу. Еще один вариант — воспользоваться trial-верcией (бесплатный период — 15 дней) утилиты WordFIX. В качестве универсального инструмента восстановления файлов рекомендуем бесплатную программу File Repair. С ее помощью есть шанс вернуть к жизни документы Word, Excel, Access, PowerPoint, архивы ZIP и RAR, видео-, аудио- и графические файлы.

Онлайн-справочники типов файлов

Прочесть о типах файлов и разобраться в их многообразии можно на специализированных онлайн-ресурсах.

ODF — открытый формат документов для офисных приложений: Часто задаваемые вопросы


Содержание

Общее

Принять участие в проекте!
Общие вопросы
Форматирование ответов
Вопросы использования
Популярные разделы:
Writer: Часто задаваемые вопросы
Calc: Часто задаваемые вопросы
Орфография и грамматика
Полезности и секреты
Главная страница

Что такое «формат» ?

Форма́т — способ записи каких-либо данных. Необходимо отметить, что каждый формат предназначен только для определённого типа данных. В то же время формат никак не влияет на те данные, которые в него могут быть записаны.

Что такое «Спецификация» ?

Специфика́ция — (от англ. Specification) инженерный термин, обозначающий набор требований и параметров, которым удовлетворяет некоторая сущность.

В частности, спецификация формата — набор требований и параметров способа записи каких-либо данных.

Что такое «открытый формат» ?

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

Открытый формат может быть использован как свободным, так и проприетарным ПО.

Главная цель открытых форматов — гарантировать адекватную возможность доступа к данным в течение долгого времени безо всякой оглядки на лицензионные права и технические спецификации. То есть если данные записаны по открытому формату, то в любом ПО они должны быть восприняты одинаково. Например, текстовый документ записанный в открытом формате может быть идентично воспроизведён в любом ПО, поддерживающим этот формат.

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

Известно, что OpenOffice.org работает с закрытыми форматами документов Microsoft Office. Как это он делает? Не нарушает ли тем самым какие-то законы ?

В большинстве или во всех странах форматы файлов не защищены законами об авторских правах.

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

После получения спецификаций другая группа разработчиков пишет собственный драйвер на основе полученных спецификаций или алгоритмов. Однако в некоторых странах алгоритмы, используемые для кодирования данных в какой-либо формат, могут быть защищены патентами.

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

Что такое OpenDocument Format (ODF) ?

OpenDocument Format (ODF, сокращённое от OASIS Open Document Format for Office Application — открытый формат документов для офисных приложений) — открытый формат файлов документов для хранения и обмена редактируемыми офисными документами, в том числе текстовыми документами (такими как заметки, отчёты и книги), электронными таблицами, рисунками, базами данных, презентациями. Он дает доступ к содержанию документов независимо от вида и версии приложения, в котором они были созданы. ODF претендует на то, чтобы быть более простым, более удобным, более понятным форматом, чем ставшие стандартом де-факто форматы от «Майкрософт» rtf, doc, xls и т.д.

Стандарт был разработан индустриальным сообществом OASIS и основан на XML-формате.

Что представляет из себя формат ODF?

Каждый документ ODF представляет собой архив zip, поэтому, чтобы проникнуть внутрь этого документа, достаточно переименовать расширение документа на zip и открыть этот архив любым zip-архиватором. После чего мы увидим, как минимум, пять xml-файлов и несколько каталогов.

В этих xml-файлах, кроме непосредственного содержания документа, имеются так называемые метаданные. Это дополнительная информация, которая позволяет задать тексту определённые параметры. Например, тип и размер шрифта, положение на странице, параметры печати или вывода на экран монитора.

Наибольшую популярность сейчас приобретает стандарт описания метаинформации XML (eXtend Markup Language). Основным требованием этого стандарта как раз и является принцип «юзерфрендли»: xml-документы должны быть легко читаемы с помощью простейших текстовых процессоров, а также xml-разметка должна быть простой для понимания простым человеком.

ODF является одной из многочисленных реализаций стандарта XML. Поэтому, открыв odf-документ как zip-архив, разобраться со структурой файлов и папок по их названиям будет не слишком большой проблемой.

Особенно для тех, кто хоть раз в своей жизни создавал html-странички, ну хотя бы на уровне «я и моя кошка».

Главный файл с содержанием — это content.xml, файл стиля — style.xml. В папках могут находиться мультимедийные файлы: картинки, аудио-, видеофайлы. В общем, документ ODF представляет собой что-то вроде веб-сайта времён статических html-страничек. И теги внутри xml-файлов вряд ли будут тяжкими для понимания:

Для сравнения, вот, например, как могут выглядеть метаданные в старом формате RTF от «Майкрософт»:

Метаданные в формате ODF выглядят более читабельными, чем метаинформация из RTF. Я уже не говорю про DOC, метаданные которого хранятся в бинарном виде.

Естественно, давайте взглянем, как выглядит читабельность в альтернативном OOXML:

Казалось бы, OOXML проще и компактнее. Особенно это отметят для себя программисты, которые любят писать всякие автоматизации документооборота. Но эта простота может оказаться хуже воровства. Поди сообрази, что значат эти самые «w:t». Разметка OOXML, так сказать, интуитивно непонятна, а ODF более читабелен для человека.

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

Документацию, конечно же, программистам читать придётся. Но и в отношении документации ODF тоже более гуманен и человечен. Хотя бы потому, что по своим размерам документация ODF ( Файлы

Файлы с каким расширениями описаны в ODF ?

Вид документа MIME-тип Расширение
Текстовый документ application/vnd.oasis.opendocument.text odt
Текстовый документ, используемый как шаблон application/vnd.oasis.opendocument.text-template ott
Графический документ application/vnd.oasis.opendocument.graphics odg
Графический документ, используемый как шаблон application/vnd.oasis.opendocument.graphics-template otg
Документ презентации application/vnd.oasis.opendocument.presentation odp
Документ презентации, используемый как шаблон application/vnd.oasis.opendocument.presentation-template otp
Электронная таблица application/vnd.oasis.opendocument.spreadsheet ods
Электронная таблица, используемый как шаблон application/vnd.oasis.opendocument.spreadsheet-template ots
Документ диаграммы application/vnd.oasis.opendocument.chart odc
Документ диаграммы, используемый как шаблон application/vnd.oasis.opendocument.chart-template otc
Документ изображения application/vnd.oasis.opendocument.image odi
Документ изображения, используемый как шаблон application/vnd.oasis.opendocument.image-template oti
Документ формулы application/vnd.oasis.opendocument.formula odf
Документ формулы, используемый как шаблон application/vnd.oasis.opendocument.formula-template otf
Глобальный текстовый документ application/vnd.oasis.opendocument.text-master odm
Текстовый документ, используемый как шаблон для HTML-документов application/vnd.oasis.opendocument.text-web oth

Использование

ODF — это формат только OpenOffice.org ?

Нет. В списке приложений поддерживающих ODF фигурируют Zoho Writer, Google Docs, Ajax Write, IBM Workplace


Даже в Microsoft Office 2007 (основном конкуренте OpenOffice.org) была обещана его поддержка, но не была реализована.

С более расширенным списком приложений, поддерживающих формат ODF можно ознакомиться на сайте Wikipedia

1 мая 2006 года ODF принят как международный стандарт ISO/IEC 26300.

21 декабря 2010 года ODF принят как стандарт РФ ГОСТ Р ИСО/МЭК 26300-2010 «Информационная технология. Формат Open Document для офисных приложений (OpenDocument) v1.0»

Open открыть файл

Некоторые из вышеописанных флагов могут быть изменены с помощью fctnl после открытия файла. Аргумент mode задает права доступа, которые используются в случае создания нового файла. Они модифицируются обычным способом, с помощью umask процесса; права доступа созданного файла равны (mode &

umask) . Обратите внимание, что этот режим применяется только к правам создаваемого файла; open создает файл только для чтения, но может вернуть дескриптор с установленными флагами для чтения и записи.

Следующие символьные константы можно использовать в mode : S_IRWXU (00700 пользователь (владелец файла) имеет права на чтение, запись и выполнение
файла); S_IRUSR (S_IREAD) (00400 пользователь имеет права на чтение файла); S_IWUSR (S_IWRITE) (00200 пользователь имеет права на запись информации в файл); S_IXUSR (S_IEXEC) (00100 пользователь имеет права на выполнение файла); S_IRWXG (00070 группа имеет права на чтение, выполнение файла и запись в него информации); S_IRGRP (00040 группа имеет права на чтение файла); S_IWGRP (00020 группа имеет права на запись информации в файл); S_IXGRP (00010 группа имеет права на выполнение
файла); S_IRWXO (00007 все остальные имеют права на чтение, выполнение файла и запись в него информации); S_IROTH (00004 все остальные имеют права на чтение файла); S_IWOTH (00002 все остальные имеют права на запись информации в файл); S_IXOTH (00001 все остальные имеют права на выполнение
файла).

mode всегда должен быть указан при использовании O_CREAT ; во всех остальных случаях этот параметр игнорируется. creat эквивалентен open с flags , которые равны O_CREAT | O_WRONLY | O_TRUNC .

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ

В файловых системах NFS, в которых идентификаторы пользователей могут быть преобразованы, open может вернуть файловый описатель, но, например, read (2) вернет ошибку EACCES из-за того, что клиент выполняет команду open , проверяя права доступа (а преобразование идентификаторов производится сервером при запросах на чтение и запись).

Если создается файл, то его время последнего доступа, создания и модификации устанавливаются в значение текущего времени, а также устанавливаются поля времени модификации и создания родительского каталога. Иначе, если файл изменяется с флагом O_TRUNC, то его время создания и время изменения устанавливаются в значение текущего времени.

НАЙДЕННЫЕ ОШИБКИ


СООТВЕТСТВИЕ СТАНДАРТАМ

Эффект (неопределенный изначально) от O_RDONLY | O_TRUNC отличается в разных реализациях. Во многих системах файл в действительности обрезается.

Флаг O_DIRECT был представлен в SGI IRIX, где он имеет похожие ограничения по принаджености, как и в Linux. IRIX также имеет вызов fcntl(2) для очередей с выравниванием и размерами. FreeBSD 4.x имеет флаг с таким же именем, но без ограничений на выравнивание. В Linux была добавлена поддержка с ядра версии 2.4.10. Старые ядра Linux просто игнорируют этот флаг.

Open 1 File

Файловое расширения 1 (open 1 file) используется операционными системами для распознавания файлов с содержимым типа 1. Ниже мы предоставим информацию которая поможет вам разобраться в этом типе файлов.

Чтобы узнать есть ли у вас приложение которое поддерживает файловое расширение 1 (more information on how to open 1 file) вам необходимо два раза щелкнуть мышкой на имени файла. После этого операционная система Windows либо откроет этот файл с соотвествующим приложением, либо предложит вам поискать подходящее приложение на диске или в интернете. Если у вас нет необходимого приложения на вашем компьютере то вам необходимо поискать в интернете приложения которые могут открывать файлы с расширением 1 — more information on how to open 1 file.

Файловые расширения помогают компьютерам найти правильное приложение для открываемых файлов. Операционные системы обычно не смотрят на содержание открываемых файлов. Вместо этого они немедленно анализируют расширение файла и на основе него пробуют найти необходимое для открытия приложение. Такой подход позволяет быстро открывать файлы. Большинство операционных систем требуют использование файловых расширений.

Файловые расширения являются очень полезной вещью. Просто взглянув на название файла мы можем определить тип информации который сохранен в этом файле и какое приложение может быть использованно для этого. Замечали ли вы что когда компьютер не знает как открыть файл он спрашивает вас о том чтобы вы выбрали программу для открытия или предлагает поискать в интернете? Да! Таким образов файловые расширения облегчают работу на компьютере. Если вдруг отсутствует программа для открытия файла, то компьютер немедленно спросит пользователя с выбором нужной программы.

Если вы знаете какие приложение могут окрыть файлы с файловым расширением 1 (open 1 file) и это не упомянуто на нашем сайте, пожалуйста пишите нам в нашей контактной форме.

Для более подробной информации о файлах 1 и другой полезной информации, читайте другие статьи на нашем сайте.

Rate this page: 5 4 3 2 1 4 / 5 based on 25 ratings

Наполнение этого сайта информацией и его поддержка это непрерывный и никогда не заканчивающийся процесс. Мы всегда рады услышать вопросы и отзывы которые могут быть посланы нам на странице контакта. Тем не менее так как количество посетителей данного сайта весьма велико мы не всегда можем лично ответить на каждый запрос. Спасибо за понимание!

Open 1 file article translations

Для более общей информации о файлах типа 1, файловых расширениях 1 (open 1 file) и реестре вы можете почитать следующий статьи:

  • Папки, файлы и пути — Файлы это набор информации сохраненной на вашем компьютере. Файлы кодируются бинарным кодом и записываются на дорожки на жесткий диск или другой носитель информации. Файлы часто представленны отдельными иконками, что является обычным способом представления для операционных систем Windows
  • Что такое файловые расширения? — Файловые расширения часто остаются незамеченными, но, тем не менее они являются важной частью компьютерных систем. В то же время многие все еще не знают о приципах функционирования этих основ компьютеров.

Open открыть файл

Для работы с файлами мы можем использовать функциональность пакета os. Все файлы в Go представлены типом os.File . Этот тип реализует ряд интерфейсов, например, io.Reader и io.Writer, которые позволяют читать содержимое файла и сохранять данные в файл.

С помощью функции os.Create() можно создать файл по определенному пути. Путь к файлу передается в качестве параметра. Если подобный файл уже существует, то он перезаписывается:

Функция возвращает объект os.File для работы с файлом и информацию об ошибке, которая может возникнуть при создании файла.

Ранее созданный файл можно открыть с помощью функции os.Open() :

Эта функция также возвращает объект os.File для работы с файлом и информацию об ошибке, которая может возникнуть при открытии файла.

Также в нашем распоряжении есть функция os.OpenFile() , которая открывает файл, а если файла нет, то создает его. Она принимает три параметра:

редим открытия файла (для чтения, для записи и т.д.)

разрешения для доступа к файлу

После окончания работы с файлом его следует закрыть с помощью метода Close() .

Илон Маск рекомендует:  Что такое код localshrink
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL