Я видел определение: «чтение() метод возвращает ASCII-код входных байтов (0-255) и возвращает -1 в конце файла»
Это определение неверно. Метод read()
не возвращает ASCII. Он возвращает байты, а мест не интерпретируется на них. Для двоичного файла они определенно не являются кодами ASCII.
Вот это определение InputStream.read()
реального ..., как это определено в javadoc:.
"public abstract int read() throws IOException
Читает следующий байт данных из входного потока Значение байта возвращается как int в диапазоне от 0 до 255. Если байт недоступен, поскольку конец потока достигнут, возвращается значение -1. "
Обратите внимание, что в ASCII не упоминается.
Кроме того, как я известно, ASCII-код EOF является 26.
На самом деле, не существует ASCII-символов, что означает EOF. Код 26 (CTRL-Z) - это символ ASCII SUB. Используется на клавиатурном вводе для обозначения EOF в Windows, но не в других контекстах. Действительно, для Mac OS и Linux ASCII код 4 (CTRL-D) служит для этой цели.
В любом случае все значения без знакового байта от 0 до 255 являются допустимыми значениями данных, которые могут отображаться в файле.Там для этого необходимо использовать другое значение для обозначения EOF.
Еще один вопрос: нулевой символ (NUL), ASCII-код: 0, для чего используется?
Все виды вещей. Действительно, все, что приложение выбирает, использовать его для.
И если файл пуст (нет данных), символ NUL существует или нет?
Символ NUL не представляет собой пустой файл или конец файла.
Если файл не имеет данных, его длина будет равна нулю. Длина файла является частью метаданных файла, так же как его имя файла, его владельца и группу, его разрешения, временную метку создания и т. Д.
какой 'read()' метод? Какой класс ? – Mritunjay
Характер 'EOF' ... проблематичен. На самом деле он больше не используется для обозначения конца файлов. В противном случае, что произойдет, если вам понадобится номер 26? – chrylis
Где вы нашли эту цитату? Конечно, это не javadoc ['InputStream.read()'] (http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html#read--), так как читать байты, а не символы ASCII. Пожалуйста, обратитесь к своему источнику, потому что он, вероятно, фиктивный/ошибочный. – Andreas