JavaRush /Java блог /Random UA /Байти. Що ми читаємо з файлу?
Roman
33 рівень

Байти. Що ми читаємо з файлу?

Стаття з групи Random UA
Загалом це інформація для новачків. Коли пішла тема про зчитування інформації з файлу, постало питання: якщо файл містить літери, то чому ми зчитуємо з нього цифри у вигляді байтів і чим є все-таки в такому разі байт. Про те, що таке байт, вже добре написано тут. Але, після прочитання, все одно залишилося питання механізму трансформації букв у цифри, довелося трохи поколупатися в інтернеті. Тому написане нижче можна вважати доповненням. Комп'ютер зберігає кожен файл у вигляді інформації, що складається з нулів і одиниць у бінарній формі. Кожен файл фактично є набором байтів наступних один за одним. У типовому варіанті існує два види файлів з інформацією: текстовий файл та бінарний файл. Текстовий файл містить типовий людський набір читабельних символів, який ми можемо відкрити у будь-якому текстовому редакторі. Бінарні файли складаються із символів, якими ми не звикли оперувати у звичайному житті, відповідно потрібна спеціальна програма, здатна їх прочитати. Текстові файли складаються з букв, цифр та інших загальноприйнятих символів. Такі файли мають розширення .txt, .py, .csv і т.д. Коли ми відкриваємо такий файл, бачимо звичний набір символів, що утворюють слова. Хоча насправді цей вміст усередині комп'ютера не зберігається у такому вигляді. Воно зберігається у вигляді бітів, тобто 0 або 1. У різних кодувальних таблицях ASCII, UNICODE або яке інше значення кожного символу визначено у бінарному вигляді. Відповідно, якщо байт може вміщувати 256 символів, то кожному символу відповідає своє двійкове кодування з нулів та одиниць (вісім поспіль записаних нулів або одиниць дають один символ). Таким чином, коли файл відкривається, текстовий редактор здійснює переведення кожного значення ASCII у звичний нам символ і відображає його вже у звичному вигляді. Наприклад, під номером 65 у бінарному вигляді коду ASCII йде 1000001, яке відобразиться у файлі латинської (не кирабоця. Кирабоця стартує зі 192 позиції) буквою «А». Тобто в системі ASCII байта зі значенням 1000001 відповідає значення латинської літери "А". Кожна лінія файлу має знак перенесення рядка – EOL (End of Line). Часто цим символом (двома символами) є \n (бінарне значення в ASCII: 00001010). Вважаючи такий символ, програма інтерпретує його як кінець рядка і перехід на рядок нижче. Є інші подібні "функціональні символи". Бінарні файли, як і текстові, зберігаються в бінарному вигляді, але до них не додається програма, яка їх розкодує, тобто немає розшифрувальної таблиці типу ASCII. В основному вміст таких файлів являє собою картинки, аудіо і відео, які в свою чергу є стислими версіями інших файлів, наприклад файлів, що самовиконуються (.ехе). Такі файли (бінарні) не читаються людиною у звичному розумінні, тому спроба відкрити їх звичними текстовими редакторами відобразить купу незрозумілого сміття. Відповідно, для коректного читання таких файлів випускаються спеціальні програми. Бінарні файли також зберігаються у вигляді набору байтів, але в даному випадку зміна хоча б одного біта може зробити весь файл нечитабельним. Таблицю символів ASCII можна переглянути тут. Таким чином, коли ми читаємо файл, то в змінну byte зчитуються по 8 символів (одиниця або нуль), які потім можуть бути конвертовані якоюсь програмою типу Блокнот у читабельні символи. Джерело , яке допомогло розібратися.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ