Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
22 - 26.docx
Скачиваний:
1
Добавлен:
21.04.2019
Размер:
28.79 Кб
Скачать

6. Установка конца файла

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

BOOL SetEndOfFile(HANDLE hFile); Она изменяет длину файла по текущему значению файлового указателя.

24. Организация файлов. Текстовые (*.Txt) и бинарные файлы

  1. Организация файлов

Организация файлов зависит от физических характеристик внешнего устройства:

1) последовательная – предусматривает создание на внешнем носителе последовательного файла. Последовательный файл – файл, к компонентам которого обеспечивается лишь последовательный доступ, в соответствии с упорядоченностью этих компонентов. Обычно в последовательных файлах используется один указатель от одного блока к другому. Иногда применяют двусвязный список. В одном блоке последовательного файла м/б размещена одна или несколько записей последовательного набора данных.

2) непрерывная – предполагает создание на внешнем носителе непрерывного файла. Непрерывный файл – файл на носителе, состоящий из ряда физических блоков, которые расположены в одной области внешнего устройства. Такая организация обеспечивает самый быстрый доступ к файлам.

3) сегментная – предполагает создание сегментированного (индексированного) файла. Индексированный файл – файл, состоящий из адреса блоков данных.

Текстовые файлы

Текстовые файлы представляют собой набор однобайтовых (ANSI) или двухбайтовых данных (UNICODE), содержащих коды символов, т. е. текстовую информацию. В оперативной памяти строкой считается последовательность байт, закрытая нуль (\0) символом. В текстовом файле каждая строка завершается символом возврата каретки (\r) и переводом строки (\n) или 0D0A в шестнадцатеричной кодировке.

Создание текстового файла:

if(GetOpenFileName(&ofn)==TRUE)

{ //Открываем файл для чтения

hFile = CreateFile(ofn.lpstrFile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);}

Чтение текстового файла:

ReadFile(hFile, str1, length_file, &length,NULL);

Запись в текстовый файл:

hFile = CreateFile(ofn.lpstrFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

length = GetWindowTextLength(hEdit);

WriteFile(hFile,buf,length,&lng,NULL);

Бинарные файлы

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

Вариант создания двоичного файла с использованием стандартного диалога:

if(GetSaveFileName(&ofn)==true)

{hFile = CreateFile(ofn.lpstrFile,GENERIC_WRITE, FILE_SHARE_WRITE,

NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);}

Чтение данных из двоичного файла в шестнадцатеричной кодировке

iLength = GetFileSize(hFile, NULL); // определяем длинну файла

SetFilePointer(hFile, 0, NULL, FILE_BEGIN); // устанавливаем указатель файла на начало файла

ReadFile(hFile, sread, iLength, &iRead, NULL); // считываем из него данные

i = 0;

// форматируем строку и выводим в шестнадцатеричном виде

while (i < iLength)

{ k += sprintf(q + k, "%x " ,(unsigned char)sread[i]);

i++; }

SetDlgItemTextA(hwnd, IE_DUMP, q);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]