Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АЛТАЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ.docx
Скачиваний:
11
Добавлен:
06.08.2019
Размер:
163.01 Кб
Скачать

Примеры

Открываем файл в режиме чтение-запись:

nf=fopen('test.txt',2)

Определим текущий размер файла test.txt:

? fseek(nf,0,2)

Результат: 260

Смещаемся в начало файла:

? fseek(nf,0,0)

Записываем в начало файла строку '=======':

? fputs(nf,'=======')

Результат: 9

Общая длина записанной строки в байтах - 9, так как в конце строки записываются спецсимволы CR и LF.

Поскольку первоначальная длина первой строки больше чем длина строки '=======', после записи первая строка разбивается на две.

Определим текущий размер файла test.txt после добавления строки изсеми символов:

? fseek(nf,0,2)

Результат: 260

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

Если добавить строку в конец файла, тогда его длина увеличится.

7. Определение конца файла

Функция feof(n1) определяет, установлен ли указатель файла в конце файла.

Параметр n1 - задает номер канала файла, в котором проверяется позиция указателя. В результате выполнения функции возвращается логическое выражение "истина" (.T.), если указатель файла установлен в конце файла или "ложь" (.F.), если указатель файла не находится в конце файла.

Примеры

nf=fopen('test.txt')

Перемещаем указатель на начало файла:

=fseek(nf,0)

? feof(nf)

Результат: .f.

Перемещаем указатель в конец файла, при этом в переменную x запишется длина файла:

x=fseek(nf,0,2)

? x

Результат: 260

? feof(nf)

Результат: .t.

=fclose(nf)

8. Создание файла

Для создания файла применяется функция создания файла nf = fcreate(s1, n1). Она создает новый файл с именем s1 и открывает его с номером nf. Если файл с таким именем уже существует, он перекрывается новым. Если же по каким-либо причинам создать файл нельзя, функция возвращает -1.

В s1 можно задать дисковод и маршрут файла. Если они не заданы, файл создается в директории, принятом по умолчанию. Создаваемому файлу можно назначить атрибуты DOS, для этого предназначен необязательный параметр n1. Hиже приведен список возможных значений этого параметра:

- n1 = 0 - чтение и запись (принимается по умолчанию);

- n1 = 1 - только чтение;

- n1 = 2 - скрытый файл;

- n1 = 3 - только чтение, скрытый файл;

- n1 = 4 - системный файл;

- n1 = 5 - только чтение, системный файл;

- n1 = 6 - системный файл, скрытый файл;

- n1 = 7 - только чтение, скрытый файл, системный файл.

Примеры

Создадим новый файл new1.txt:

newf = fcreate('new1.txt')

Определим размер файла:

s=fseek(newf,0,2)

? s

Результат: 0

Как и должно быть, размер только что открытого файла равен нулю. Запишем в файл текст "Пробный текст" при помощи функции fwrite:

? fwrite(newf,'Пробный текст')

Результат: 13

Эта команда записала в файл 13 символов, но они еще не являются строкой, поскольку не записаны символы CR и LF.

Допишем продолжение первой строки:

? fwrite(newf,' Продолжение первой текстовой строки')

Запишем символы конца строки:

? fwrite(newf,chr(13)+chr(10))

Вторую строку запишем при помощи функции fputs():

? fputs(newf,"Вторая строка текста")

=fclose(newf)

 

 

 

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

– PARAMETERS()

– TYPE()

Функция PARAMETERS() возвращает числовую величину, определяющую количество параметров, переданных в процедуру. Возвращаемое значение - числовое.

Функция TYPE("e1") проверяет выражение и в результате возвращает одну заглавную букву, которая обозначает тип выражения – e1.

Возможные значения, которые возвращает функция TYPE():

– символьное = C;

– числовое = N;

– дата = D;

– логическое = L;

– неопределенное = U.

Примеры

? TYPE(["Привет"])

Результат: C

s="Привет"

? TYPE("s")

Результат: C

? TYPE("(12*3)+4")

Результат: N

x=204.23

? TYPE("x")

Результат: N

? TYPE ("DATE()")

Результат: D

? TYPE(".F. .OR. .T.")

Результат: L

? TYPE("ANSWER=42")

Результат: U

1. Копирование файла

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

Примеры

function mycopy

 parameters file1,file2

close all

set talk off

? 'Процедура копирования файлов'

if parameters() < 2

? 'Вы неправильно вызываете эту функцию'

? 'Использовать ее нужно следующим образом:'

? ' =mycopy(cf1,cf2)'

? '    cf1 - имя файла - источника'

? '    cf2 - имя файла - цели'

return .f.

endif

if type("file1") <> "C"

? 'Первый параметр не строка'

return .f.

endif

if type("file2") <> "C"

? 'Второй параметр не строка'

return .f.

endif

? 'Копируем файл '+ file1

?? ' в файл '+file2

nf1=fopen(file1)

if nf1 < 0

? 'Не могу открыть файл '+file1

return .f.

endif

nf2=fopen(file2)

if nf2 > 0

? 'Файл '+ file2 + ' уже есть на диске!'

=fclose(nf1)

=fclose(nf2)

return .f.

endif

nf2 = fcreate(file2)

do while not feof(nf1)

s=fgets(nf1)

 =fputs(nf2,s)

enddo

=fclose(nf1)

=fclose(nf2)

return .t.

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