Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Глава 16 Файлы. Сохраним информацию на будущее

Мы исследовали оперативную память компьютера с помощью переменных и массивов, но как сохранить данные надолго? Существует много разных способов долгосрочного хранения данных.

BASIC-256 поддерживает запись и чтение информации из файлов на вашем жестком диске. Этот процесс ввода и вывода информации часто обозначают I/O1.

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

Чтение строк из файла

В первой программе этой главы вы увидите много новых операторов и констант (постоянных) которые нужны для управления данными.

1 # readfile. kbs
2 input "имя файла>", fn$
3 if not exists(fn$) then
4 print fn$ + " не существует."
5 end
6 end if
7 #
8 n = 0
9 open fn$
10 while not eof
11 l$ = readline
12 n = n + 1
13 print n + " " + l$
14 end while
15 #
16 print "Файл " + fn$ + " содержит " + size + " байт."
17 close

Программа 90 Чтение строк из файла

имя файла>test_ru. txt
1 Настало время испытать
2 силу человеческой души!
3 - Томас Пейн
Файл test_ru. txt содержит 110 байт.

Пример вывода программы 90 Чтение строк из файла

Описание: http://*****/wp-content/uploads/2010/11/new_concept.png

exist(выражение)

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

Возвращает true (истина или 1) если файл существует и false (ложь или 0) в противном случае.

Описание: http://*****/wp-content/uploads/2010/11/new_concept.png

openвыражение
open (выражение)
open номер_файла, выражение
open (номер_файла, выражение)

Открывает указанный переменной выражение файл, задавая ему указанный номер_файла. Если файл не существует, создается новый файл так, что в него можно добавлять информацию (см. операторы write и writeln). Не забудьте выполнить команду close, когда ваша программа закончит работать с файлом.

BASIC-256 может открыть одновременно не более восьми (8) файлов с номерами от 0 до 7. Если номер файла не указан, он открывается с номером нуль (0).

Описание: http://*****/wp-content/uploads/2010/11/new_concept.png

eof
eof ()
eof(номер_файла)

Функция eof возвращает истину (true) если достигнут конец файла в процессе чтения и ложь (false) в если еще есть не прочтенные данные.

Если номер_файла не указан используется значение нуль (0).

Описание: http://*****/wp-content/uploads/2010/11/new_concept.png

readline
readline ()
readline (номер_файла)

Возвращает прочитанную из файла строку. Если достигнут конец файла [eof(номер_файла)=true], тогда функция возвращает пустую строку ("")

Если номер_файла не указан используется значение нуль (0).

Описание: http://*****/wp-content/uploads/2010/11/new_concept.png

size
size ()
size(номер_файла)

Возвращает длину файла в байтах.

Если номер_файла не указан используется значение нуль (0).

Описание: http://*****/wp-content/uploads/2010/11/new_concept.png

close
close ()
close(номер_файла)

Функция close закрывает ввод/вывод в файл и позволяет другому файлу использовать тот же номер.

Если номер_файла не указан используется значение нуль (0).

Запись строк в файл

НЕ нашли? Не то? Что вы ищете?

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


1 # resetwrite. kbs
2 open "resetwrite. dat"
3
4 print "введите пустую строку для завершения записи"
5
6 # стираем данные из файла (reset) и начинаем туда писать сначала
7 reset
8 repeat:
9 input ">", l$
10 if l$ <> "" then
11 writeline l$
12 goto repeat
13 end if
14
15 # переходим к началу файла и отображаем содержимое
16 seek 0
17 k = 0
18 while not eof()
19 k = k + 1
20 print k + " " + readline()
21 end while
22
23 close
24 end

Программа 91 Очищение файла и запись.

введите пустую строку для завершения записи
>Вот простая информация
>которую я записал в файл
>раз, два, три, четыре пять
>Я иду искать!
>
1 Вот простая информация
2 которую я записал в файл
3 раз, два, три, четыре пять
4 Я иду искать!

Пример вывода программы 91 Очищение файла и запись.

Описание: http://*****/wp-content/uploads/2010/11/new_concept.png

reset
reset ()
reset номер_файла
reset (номер_файла)

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

Если номер_файла не указан, используется нулевой номер (0).

Описание: http://*****/wp-content/uploads/2010/11/new_concept.png

seekвыражение
seek(выражение)
seek номер_файла, выражение
seek(номер_файла, выражение)

Перемещает указатель чтения или записи файла в указанную позицию. Для перемещения указателя в начало файла используйте значение нуль (0). Для перемещения указателя в конец файла используйте значение функции size().

Если номер_файла не указан, используется нулевой номер (0).

Описание: http://*****/wp-content/uploads/2010/11/new_concept.png

writelineвыражение
writeline(выражение)
writeline номер_файла, выражение
writeline (номер_файла, выражение)

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

Если номер_файла не указан, используется нулевой номер (0).


1 # appendwrite. kbs
2 open "appendwrite. dat"
3
4 print "введите пустую строку для завершения записи"
5
6 # перемещаем указатель файла в конец и добавляем записи
7 seek size
8 repeat:
9 input ">", l$
10 if l$ <> "" then
11 writeline l$
12 goto repeat
13 end if
14
15 # перемещаем указательк началу файла, чтобы вывести его содержимое
16 seek 0
17 k = 0
18 while not eof()
19 k = k + 1
20 print k + " " + readline()
21 end while
22
23 close
24 end

Программа 92 Дописываем строчки в файл

введите пустую строку для завершения записи
>sed sed sed
> vim vim vim
>

1 bar bar bar
2 foo foo foo
3 grap grap grap
4 sed sed sed
5 vim vim vim


Пример вывода программы 92 Дописываем строчки в файл

Функция read() и оператор write

В первых трех программах этой главы мы обсуждали функцию readline() и оператор writeline. Вот еще два других способа читать из файла и писать в файл: функция read() и оператор write.

Описание: http://*****/wp-content/uploads/2010/11/new_concept.png

read
read ()
read (номер_файла)

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

Если номер_файла не указан, используется нулевой номер (0).

Описание: http://*****/wp-content/uploads/2010/11/new_concept.png

write выражение
write (выражение)
write номер_файла, выражение
write (номер_файла, выражение)

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

Если номер_файла не указан, используется нулевой номер (0).

Описание: http://*****/wp-content/uploads/2010/11/big_program.png

Эта программа использует простой текстовый файл имитируя телефонную записную книжку.


1 # phonelist. kbs
2 # Добавляем номер телефона в список и показываем
3 filename$ = "phonelist. txt"
4
5 print "phonelist. kbs - Управление списком телефонов."
6 do
7 input "Добавить, Посмотреть, Закончить (a/l/q)?",action$
8 if left(lower(action$),1) = "a" then gosub addrecord
9 if left(lower(action$),1) = "l" then gosub listfile
10 until left(lower(action$),1) = "q"
11 end
12
13 listfile:
14 if exists(filename$) then
15 # отображаем список имен и телефонов из файла
16 open filename$
17 print "Файл имеет размер " + size + " байт"
18 while not eof
19 # читаем следующую строки из файла и печатаем ее
20 print readline
21 end while
22 close
23 else
24 print "В файле нет записей. Добавьте первую."
25 end if
26 return
27
28 addrecord:
29 input "Имя?", name$
30 input "Номер телефона?", phone$
31 open filename$
32 # ищем конец файла
33 seek size()
34 # мы достигли конца файла, - добавляем строку
35 writeline name$ + ", " + phone$
36 close
37 return

Программа 93 Большая программа — Телефонная книжка

phonelist. kbs - Управление списком телефонов.
Добавить, Посмотреть, Закончить (a/l/q)?l
Файл имеет размер 76 байт
Аня,
Валя,
Дима,
Паша,
Петя,
Добавить, Посмотреть, Закончить (a/l/q)?a
Имя? Вася
Номер телефона?
Добавить, Посмотреть, Закончить (a/l/q)?l
Файл имеет размер 95 байт
Аня,
Валя,
Дима,
Паша,
Петя,
Вася,
Добавить, Посмотреть, Закончить (a/l/q)?q

Пример вывода программы 93 Большая программа — Телефонная книжка