Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 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 Чтение строк из файла
| exist(выражение) Ищет на компьютере файл, имя которого определено переменной выражение. Имя диска2 и путь должны быть указаны, как часть имени файла. Если они опущены, происходит поиск по текущему рабочему каталогу. Возвращает true (истина или 1) если файл существует и false (ложь или 0) в противном случае. |
| openвыражение Открывает указанный переменной выражение файл, задавая ему указанный номер_файла. Если файл не существует, создается новый файл так, что в него можно добавлять информацию (см. операторы write и writeln). Не забудьте выполнить команду close, когда ваша программа закончит работать с файлом. BASIC-256 может открыть одновременно не более восьми (8) файлов с номерами от 0 до 7. Если номер файла не указан, он открывается с номером нуль (0). |
| eof Функция eof возвращает истину (true) если достигнут конец файла в процессе чтения и ложь (false) в если еще есть не прочтенные данные. Если номер_файла не указан используется значение нуль (0). |
| readline Возвращает прочитанную из файла строку. Если достигнут конец файла [eof(номер_файла)=true], тогда функция возвращает пустую строку ("") Если номер_файла не указан используется значение нуль (0). |
| size Возвращает длину файла в байтах. Если номер_файла не указан используется значение нуль (0). |
| 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 Очищение файла и запись.
| reset Стирает все данные в открытом файле, и перемещает указатель файла на начало. Если номер_файла не указан, используется нулевой номер (0). |
| seekвыражение Перемещает указатель чтения или записи файла в указанную позицию. Для перемещения указателя в начало файла используйте значение нуль (0). Для перемещения указателя в конец файла используйте значение функции size(). Если номер_файла не указан, используется нулевой номер (0). |
| 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.
| read Читает следующее слово или число (токен) из файла. Токены отделяются друг от друга пробелом, табуляцией или символом конца строки. Множественные пробельные элементы воспринимаются как один. Если номер_файла не указан, используется нулевой номер (0). |
| write выражение Записывает значение аргумента выражение в открытый файл и не добавляет символ конца строки. Если номер_файла не указан, используется нулевой номер (0). |
| Эта программа использует простой текстовый файл имитируя телефонную записную книжку. |
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 Большая программа — Телефонная книжка




