Как изменить или распознать формат файла в Windows

Для создания файла ответов понадобится Windows AIK. Windows AIK представляет собой набор инструментальных средств, разработанных компаей Microsoft для автоматизации процесса развертывания Windows. С помощью Windows AIK мы создадим файлы ответов для образа загрузки и образа установки Windows 7. 

Что такое файловая система

Обычно вся информация записывается, хранится и обрабатывается на различных цифровых носителях в виде файлов. Далее, в зависимости от типа файла, кодируется в виде знакомых расширений *exe, *doc, *pdf и т.д., происходит их открытие и обработка в соответствующем программном обеспечении. Мало кто задумывается, каким образом происходит хранение и обработка цифрового массива в целом на соответствующем носителе.

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

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

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

На физическом уровне драйверы ФС оптимизируют запись и считывание отдельных частей файлов для ускоренной обработки запросов, фрагментации и «склеивания» хранящейся в ячейках информации. Данный алгоритм получил распространение в большинстве популярных файловых систем на концептуальном уровне в виде иерархической структуры представления метаданных (B-trees). Технология снижает количество самых длительных дисковых операций позиционирования головок при чтении произвольных блоков. Это позволяет не только ускорить обработку запросов, но и продлить срок службы HDD. В случае с твердотельными накопителями, где принцип записи, хранения и считывания информации отличается от применяемого в жестких дисках, ситуация с выбором оптимальной файловой системы имеет свои нюансы.

Изменение расширения отдельного файла

Начнем с того, что по умолчанию в Windows 7, 8.1 и Windows 10 расширения файлов не отображаются (во всяком случае, для тех форматов, которые известны системе). Для смены их расширения следует предварительно включить его отображение.

Изменение расширения отдельного файла

Для этого в Windows 8, 8.1 и Windows 10 вы можете зайти через проводник в папку, содержащую файлы, которые требуется переименовать, выбрать в проводнике пункт меню «Вид», а затем, в пункте «Показать или скрыть» включить «Расширения имен файлов».

Следующий способ подойдет как для Windows 7, так и для уже упомянутых версий ОС, с помощью него показ расширений включается не только в конкретной папке, но и во всей системе.

Изменение расширения отдельного файла

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

Читайте также:  Microsoft Office 2010 лицензионный ключ 2021-2020

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

Изменение расширения отдельного файла

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

Пароль Пароль для получения доступа к файлу

Создатель Идентификатор пользователя, создавшего файл

Владеделец Текущий владелец

Флаг «Только чтение» 0 –для чтения/записи; 1- только чтение

Флаг «Скрытый» 0 – нормальный, 1 – не отображать в перечне файлов каталога

Флаг «Системный» 0 – нормальный; 1- системный

Флаг «Архивный» 0 – заархивирован; 1 – требуется архивация

Флаг ASCII/двоичный0 – ASCII; 1- двоичный

Флаг произвольного доступа 0 – только последовательный доступ; 1 – произвольный доступ

Флаг «временный» 0 – нормальный, 1- для удаления файла по окончании процесса

Флаги блокировки 0 – неблокированный; отличный от нуля для блокированного

Длина записи Количество байтов в записи

Время создания Дата и время создания файла

Время последнего

доступа Дата и время последнего изменения файла

Текущий размер Количество байтов в файле

Максимальный размер Кол-во байтов до которого можно увеличивать размер файла

Операции с файлами

Смена при помощи конвертора

При изменении расширения содержимое объекта остаётся нетронутым. Если требуется модифицировать и то, и другое, то это можно сделать специальной программой — конвертором. Для каждого типа существует свой преобразователь. Например, формат документа MS Office изменяется в самом приложении Word при выборе команды «Сохранить как…» и нужного типа. Можно преобразовать DOCX (Word 2007+) в DOC (более ранние версии) и обратно.

Существует также немало мультимедийных конверторов для звуковых и видеофайлов. Многие из них распространяются бесплатно. Функции преобразования есть и в программах-редакторах. Один из них — это Audacity. С его помощью можно сменить тип и качество аудиофайлов. Это приложение также извлекает звуковые дорожки из различных видеороликов (AVI или MP4 в MP3). Изменить формат файла в Windows 10 можно также и с помощью соответствующих доверенных приложений, распространяемых через Microsoft Store.

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

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

С помощью всех этих приложений можно изменить формат файла на Виндовс 7, а также и других её версиях.

Способ 3: WordPad

WordPad — более продвинутая версия рассмотренного выше текстового редактора, которая тоже по умолчанию установлена в Windows 7 и подходит для создания документа. Алгоритм действий при этом практически не меняется.

Способ 3: WordPad
Способ 3: WordPad
Способ 3: WordPad
  1. Через то же меню «Пуск» отыщите WordPad и запустите эту программу. Если ее ярлык расположен у вас на рабочем столе, можно использовать его для открытия софта.
  2. Начните редактировать документ, используя доступные опции при помощи панели инструментов сверху.
  3. Откройте меню и выберите пункт «Сохранить». Уже знакомая комбинация Ctrl + S тут тоже функционирует нормально.
  4. В обязательном порядке разверните меню «Тип файла», если стандартный RTF не подходит.
  5. Укажите подходящее расширение, а затем введите название документа и подберите подходящее расположение.
Способ 3: WordPad
Способ 3: WordPad

Структура файлов [ править | править код ]

Файл EXE, создаваемый компоновщиком, состоит из двух частей:

  • управляющая информация для загрузчика;
  • загрузочный модуль.
Читайте также:  Что за папка FOUND.000

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

Стандартная часть заголовка имеет следующий формат [3] :

00-01 4D5A — сигнатура файла .EXE; 02-03 Длина образа задачи по модулю 512 (то есть число полезных байт в последнем блоке). Компоновщики версий до помещали в это поле 04; если оно имеет такое значение, его рекомендуется игнорировать); 04-05 Длина файла в блоках; 06-07 Число элементов таблицы настройки адресов; 08-09 Длина заголовка в 16-байтных параграфах. Используется для выяснения начала тела загрузочного модуля; 0A-0B Минимальный объём памяти, которую нужно выделить после конца образа задачи (в 16-байтных параграфах); 0C-0D Максимальный объём памяти, которую нужно выделить после конца образа задачи (в 16-байтных параграфах); 0E-0F Сегментный адрес начала стекового сегмента относительно начала образа задачи; 10-11 Значение SP при входе в задачу; 12-13 Контрольная сумма — ноль минус результат сложения без переноса всех слов файла; 14-15 Значение IP (счетчика команд) при входе в задачу; 16-17 Сегментный адрес начала кодового сегмента относительно начала образа задачи; 18-19 Адрес первого элемента таблицы настройки адресов относительно начала файла; 1A-1B Номер сегмента перекрытий (0 для корневого сегмента программы).

Далее следует таблица настройки адресов. Таблица состоит из элементов, число которых записано в байтах 06-07. Элемент таблицы настройки состоит из двух полей: 2-байтного смещения и 2-байтного сегмента, и указывает слова в загрузочном модуле, содержащее адрес, который должен быть настроен на место памяти, в которое загружается задача. Настройка производится следующим образом:

  1. В области памяти после резидентной части выполняющей загрузку программы строится префикс программного сегмента (PSP);
  2. Стандартная часть заголовка считывается в память;
  3. Определяется длина тела загрузочного модуля (разность длины файла 04-07 и длины заголовка 08-09 плюс число байт в последнем блоке 02-03). В зависимости от признака, указывающего загружать задачу в конец памяти или в начало, определяется сегментный адрес для загрузки. Этот сегмент называется начальным сегментом;
  4. Загрузочный модуль считывается в начальный сегмент;
  5. Таблица настройки порциями считывается в рабочую память;
  6. Для каждого элемента таблицы настройки к полю сегмента прибавляется сегментный адрес начального сегмента. В результате элемент таблицы указывает на слово в памяти, к которому прибавляется сегментный адрес начального сегмента;
  7. Когда таблица настройки адресов обработана, в регистры SS и SP записываются значения, указанные в заголовке, а к SS прибавляется сегментный адрес начального сегмента. В ES и DS записывается сегментный адрес начала PSP. Управление передается по адресу, указанному в заголовке (байты 14-17).

Буферизация данных

Как уже говорилось ранее, когда мы выводим данные, они сначала помещаются в буфер. Очистка буфера осуществляется

  • 1) Если он заполнен
  • 2) Если поток закрывается
  • 3) Если мы явно указываем, что необходимо очистить буфер (здесь тоже есть исключения:)).
  • 4) Также очищается, если программа завершилась удачно. Вместе с этим закрываются и все файлы. В случае ошибки выполнения этого может не произойти.

Форсировать выгрузку буфера можно с помощью вызова функции fflush(File *). Рассмотрим два примера – с очисткой и без.

#include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { FILE *file; char c; file = fopen(«C:/c/», «w»); do { c = getch(); fprintf(file, «%c», c); fprintf(stdout, «%c», c); //fflush(file); } while(c != ‘q’); fclose(file); getch(); }

Раскомментируйте вызов fflush. Во время выполнения откройте текстовый файл и посмотрите на поведение.

Буфер файла можно назначить самостоятельно, задав свой размер. Делается это при помощи функции

Читайте также:  Почему компьютер сам выходит из спящего режима Windows 10

void setbuf (FILE * stream, char * buffer);

которая принимает уже открытый FILE и указатель на новый буфер. Размер нового буфера должен быть не меньше чем BUFSIZ (к примеру, на текущей рабочей станции BUFSIZ равен 512 байт). Если передать в качестве буфера NULL, то поток станет небуферизированным. Можно также воспользоваться функцией

int setvbuf ( FILE * stream, char * buffer, int mode, size_t size );

которая принимает буфер произвольного размера size. Режим mode может принимать следующие значения

  • _IOFBF — полная буферизация. Данные записываются в файл, когда он заполняется. На считывание, буфер считается заполненным, когда запрашивается операция ввода и буфер пуст.
  • _IOLBF — линейная буферизация. Данные записываются в файл когда он заполняется, либо когда встречается символ новой строки. На считывание, буфер заполняется до символа новой строки, когда запрашивается операция ввода и буфер пуст.
  • _IONBF – без буферизации. В этом случае параметры size и buffer игнорируются.

В случае удачного выполнения функция возвращает 0.

Пример: зададим свой буфер и посмотрим, как осуществляется чтение из файла. Пусть файл короткий (что-нибудь, типа Hello, World!), и считываем мы его посимвольно

#include <conio.h> #include <stdio.h> #include <stdlib.h> void main() { FILE *input = NULL; char c; char buffer[BUFSIZ * 2] = {0}; input = fopen(«D:/c/», «rt»); setbuf(input, buffer); while (!feof(input)) { c = fgetc(input); printf(«%c\n», c); printf(«%s\n», buffer); _getch(); } fclose(input); }

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

Создание файла произвольного размера в Windows

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

Создание файла с помощью fsutil

Быстрее и проще всего создать файл с помощью утилиты командной строки fsutil. Для примера откроем консоль (обязательно с правами администратора) и создадим на диске E файл размером 1ГБ командой:

fsutil file createnew E:\ 1000000000

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

Создание файла с помощью PowerShell

То же самое можно сделать с помощью PowerShell, хотя команды будут немного сложнее:

$file = New-Object -TypeName -ArgumentList E:\,Create,ReadWrite$(1000Mb)$()

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

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

$content = New-Object -TypeName Byte[] -ArgumentList 10MbSet-Content -Path E:\ -Value $content -Encoding Byte

При использовании этого метода создание файла занимает некоторое время, зависящее от размера файла. Кроме того, с его помощью невозможно создать файл большого размера. Максимальный размер файла ограничен встроенным значением [int]::MaxValue и при его превышении будет выдана ошибка ″Array dimentions exceeded supported range″.

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

$array = New-Object -TypeName Byte[] -ArgumentList 10Mb$obj = New-Object -TypeName $($array)Set-Content -Path E:\ -Value $array -Encoding Byte

Ну и для генерации большого количества файлов (напр. 1000) можно воспользоваться таким скриптом:

$array = New-Object -TypeName Byte[] -ArgumentList 10Mb$obj = New-Object -TypeName $($array)for ($i=1; $i -le 1000; $i++) {Set-Content -Path E:\$i -Value $array -Encoding Byte}

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