java — где находится шестнадцатеричный код «EOF»; персонаж?

Насколько известно, в конце всех файлов, особенно текстовых, есть шестнадцатеричный код для EOF или же НОЛЬ персонаж. И когда мы хотим написать программу и прочитать содержимое текстового файла, мы отправляем функцию чтения, пока не получим этот шестнадцатеричный код EOF.

Мой вопрос: я скачал несколько инструментов, чтобы увидеть шестнадцатеричное представление текстового файла. но я не вижу никакого шестнадцатеричного кода для EOF(Конец файла / NULL) или СРВ(Конец текста)


ASCII / Hex кодовые таблицы:

введите описание изображения здесь

Это выходные данные инструментов просмотра Hex:

введите описание изображения здесь


Примечание. Мой входной файл — это текстовый файл, содержимое которого имеет вид «Где шестнадцатеричный код« EOF »?»

Цените ваше время и внимание.

33

Решение

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

Фактически, значение «EOF» возвращается, например, такими функциями C, как getchar явно int значение вне диапазона байта, поэтому он не может быть сохранен в файле!

Иногда определенные форматы файлов настаивают на добавлении терминаторов NUL (возможно, потому, что именно так строки обычно хранятся в C), хотя обычно они разделяют несколько записей в одном файле, а не в файле в целом. И такое оформление обычно лишает файл права считать текстовым файлом.

Коды ASCII, такие как ETX и NUL, относятся ко времени телетайпов и друзей. NUL используется в C для в памяти строки, но это не имеет отношения к файловым системам.

34

Другие решения

Был — давным-давно — Конец файла маркер, но он не использовался в файлах в течение многих лет.

Вы можете продемонстрировать отдаленное эхо этого на окнах, используя:

C:\>copy con junk.txt
Hello
Hello again
- Press <Ctrl> and <z>
C:\>dump junk.txt
junk.txt:
00000000  4865 6c6c 6f0d 0a48 656c 6c6f 2061 6761 Hello..Hello aga
00000010  696e 0d0a                               in..
C:\>

Обратите внимание на использование Ctrl-Z в качестве маркера EOT.

Однако обратите внимание также, что Ctrl-Z больше не появляется в файле — раньше он отображался как 0x1a но только на некоторых операционных системах и даже не всегда.

Использование ETX (0x03) остановился еще до тех смутных и далеких времен.

15

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

8

Когда-то были даже разные символы EOF (для разных операционных систем). Больше не видел никого. (Обычно файлы были в блоках по 128 байт.) Для кодирования PITA, как современные спецификации.

Вместо этого все еще есть int read() это обычно обеспечивает значение байта, но для EOF — -1.

NUL-символ — это строковый терминатор в C. В Java вы можете иметь NUL-символ в середине строки. Чтобы взаимодействовать с C, сгенерированные байты UTF-8 используют многобайтовую кодировку как для символов Unicode> 127, так и для NUL.

(Часть этого, вероятно, уже известна.)

1

EOT байт (0x04) используется по сей день unix tty терминалами для обозначения конца ввода. Вы вводите это с Ctrl + D (То есть. ^D) для завершения ввода в оболочку или любую другую программу чтения из стандартного ввода.

Однако, как отмечали другие, это отличается от EOF, который является условием, а не частью данных как таковой.

0

В некоторых случаях вам нужен символ конца файла, например, отправка файла на принтер с компьютера Unix. Большинство принтеров с поддержкой Windows / DOS ожидают, что маркер конца файла напечатает файл, сохраненный в их памяти. Если маркер конца файла не отправляется, принтер просто садится до истечения времени ожидания (обычно 2 минуты) и затем печатает файл. Если вы используете lpr для печати из Unix, обязательно добавьте маркер конца файла. Windows / DOS прикрепляет его автоматически, и принтеры рассчитаны на его ожидание.

-2
По вопросам рекламы [email protected]