Текстовый файл — это файл в котором содержатся данные, рассчитанные на интерпретацию в качестве текста. Эти данные являются последовательностью символов, которые предусматривает тот или иной набор символов.
Последовательности символов сгруппированы в строки, которые разделяются символами-разделителями строк:
LF
(0x0A)
для Unix-подобных системCR
(0x0D)
для MacOS до 9 версии, а далее так жеLF
CR
LF
(0x0D 0x0A)
для Windows
GameMaker без проблем читает файлы как с
LF
, так и сCRLF
, разработчику не нужно об этом заботиться
Конец файла обозначается индикатором ОС EOF
Спецсимволы можно увидеть в Notepad++, если включить нужные настройки.
Пример текстового файла file.txt
в Windows:
Autumn is yellow,
CR
LF
Winter is white,CR
LF
Spring is green,CR
LF
Summer is bright!EOF
Вот так этот файл хранится в виде байт-кода
41 75 74 75 6D 6E 20 69 73 20 79 65 6C 6C 6F 77 2C 0D 0A 57 69 6E 74 65 72 20 69 73 20 77 68 69 74 65 2C 0D 0A 53 70 72 69 6E 67 20 69 73 20 67 72 65 65 6E 2C 0D 0A 53 75 6D 6D 65 72 20 69 73 20 62 72 69 67 68 74 21
В байт-коде выше можно найти пары байтов 0D 0A
, которые отвечают за разделение строк в Windows (в Linux и MacOS будет только байт 0A
), но нет никакого байта для EOF
в конце файла. Всё дело в том, что EOF
это не символ, который якобы есть в конце файла, а индикатор, который передаёт ядро операционной системы при чтении файла, если достигнут его конец. Хотя в старых операционных системах в конце файла действительно был специальный символ.
Файловые функции GameMaker создают текстовые файлы в кодировке ANSI, из-за чего многие символы из Юникода сохраняться не будут. Если нужно сохранить в файл глифы Юникода, необходимо создать текстовый файл в формате UTF-8 и включить его в проект. После этого с ним можно работать файловыми функциями, записывая глифы Юникода