357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
1

Какова Структура типичного текстового файла в Windows и Linux?

25.08.2018, 14:12. Показов 6835. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Или где об этом можно прочитать.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2018, 14:12
Ответы с готовыми решениями:

Сортировка текстового файла. Структура "Студент"
В файле input.txt содержатся сведения о группе студентов в формате ФИО год рождения оценки по 5...

Чтение текстового файла (Windows Phone)
Собственно как прочитать содержимое текстого файла на форму?? Пишу приложение под Windows Phone,...

Передача файла по сети из Windows в Linux
Всем привет. Надо передать файл по консоли из Windows в Linux по сети. Почему именно по консоли,...

Считывание текстового файла команда Windows тип
Здравствуйте! Помогите пожалуйста отредактировать код, иначе голова сейчас взорвется! Сложности...

31
6765 / 2736 / 383
Регистрация: 17.02.2013
Сообщений: 4,042
25.08.2018, 14:52 2
Никакова. Просто последовательность байт. Каждый байт - это один символ. Соответствие значений байт символам называется кодом ASCII. https://ru.wikipedia.org/wiki/ASCII

Добавлено через 5 минут
Среди символов есть и непечатные. Например байт со значением 9 - это табуляция. Байт со значением 0xD - это возврат каретки. Байт со значением 0xA - это перевод строки. В Виндоуз на конце каждой строки ставится пара байт 0xD 0xA. А во всех Unix-ах, в т.ч и в Linux в конце строки ставится только 0xA. Только этим текстовые файлы в этих ОС и отличаются. Ну и еще кодировкой русских букв. В Виндоуз это кодировка CP1251, а в Unix-ах традиционно КОИ-8. Эти кодировки одинаковы в нижней половине и являются там все той-же ASCII. Только русские буквы в верхней половине распиханы по разному.
4
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
25.08.2018, 14:56  [ТС] 3
Ethereal, спасибо, но, я имел в виду - именно структуру. Т.е. вначале, я так понимаю, в файлах *nix идет некий заголовок, там есть тип файла, ну, и т.п. Вот об этом бы хотелось узнать детальнее. Ведь в текстовых редакторах показывается лишь, собственно, содержимое текстового файла.
Потом, скажем, в Windows есть еще альтернативные потоки файла для хранение метаданных. Правда, они представляют собой, вроде бы, отдельные файлы (?). Или нет?
0
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
25.08.2018, 15:23 4
Цитата Сообщение от Htext Посмотреть сообщение
Потом, скажем, в Windows есть еще альтернативные потоки файла для хранение метаданных.
Никаких метаданных в текстовых файлах нет и быть не может.
Цитата Сообщение от Htext Посмотреть сообщение
Ведь в текстовых редакторах показывается лишь, собственно, содержимое текстового файла.
Вот это "содержимое" - и есть весь файл, больше там ничего нет, никакой структуры.
4
Ушел с форума
Автор FAQ
16262 / 7587 / 1061
Регистрация: 11.11.2010
Сообщений: 13,609
25.08.2018, 15:50 5
Htext,
может быть речь идет о bin-файлах? У таких файлов действительно есть заголовки. Файлы для Windows называются PE-файлы, файлы для linux - Elf-файлы. Но это не текстовые файлы
1
6765 / 2736 / 383
Регистрация: 17.02.2013
Сообщений: 4,042
25.08.2018, 16:40 6
Цитата Сообщение от Htext Посмотреть сообщение
Ethereal, спасибо, но, я имел в виду - именно структуру. Т.е. вначале, я так понимаю, в файлах *nix идет некий заголовок, там есть тип файла, ну, и т.п.
Нету структуры, нету заголовка. И я об этом уже говорил :
Цитата Сообщение от Ethereal Посмотреть сообщение
Никакова.
Добавлено через 28 минут
Цитата Сообщение от Mikl___ Посмотреть сообщение
может быть речь идет о bin-файлах?
Тут лучше было бы вместо .bin написать словами "двоичных". А то расширение .bin как правило лепится к тем двоичным файлам, что тоже не имеют какой-либо заранее заданной структуры. Это я скорей для тс-а поясняю. Во избежание.
Т.е. .txt - это текстовый файл без структуры, а .bin - двоичный файл без структуры.
3
Ушел с форума
Автор FAQ
16262 / 7587 / 1061
Регистрация: 11.11.2010
Сообщений: 13,609
25.08.2018, 16:44 7
Ethereal,
может быть ТС называет doc/docx/rtf/pdf текстовыми файлами?
1
6765 / 2736 / 383
Регистрация: 17.02.2013
Сообщений: 4,042
25.08.2018, 16:46 8
Может быть. Тогда поясним.

.EXE - исполняемый двоичный файл со структурой. .RTF - файл размеченного текстового документа со структурой. .DOC .DOCX - файлы документов редактора MS-Word со структурой. Но просто текстовыми файлами называются файлы без структруры. В Windows им традиционно дают расширение .TXT
3
Ушел с форума
Автор FAQ
16262 / 7587 / 1061
Регистрация: 11.11.2010
Сообщений: 13,609
25.08.2018, 16:48 9
Цитата Сообщение от Ethereal Посмотреть сообщение
Тут лучше было бы вместо .bin написать словами "двоичных"
я имел ввиду dll/exe/sys-файлы
0
6765 / 2736 / 383
Регистрация: 17.02.2013
Сообщений: 4,042
25.08.2018, 17:11 10
Чтобы не путать .TXT называют текстовыми файлами, а .RTF .DOC .DOCX обзывают файлами текстовых документов. Как бы словечко "документ" намекает, что это файл от какой-то программы, которая эти документы создает. Т.е. файл имеет структуру только какой-то программе понятную.

Добавлено через 54 секунды
Цитата Сообщение от Mikl___ Посмотреть сообщение
я имел ввиду dll/exe/sys-файлы
Да я понял. Тут главное тс-а не запутать.
3
Эксперт Hardware
Эксперт Hardware
6092 / 2337 / 390
Регистрация: 29.07.2014
Сообщений: 3,102
Записей в блоге: 4
25.08.2018, 19:00 11
Цитата Сообщение от Htext Посмотреть сообщение
в Windows есть еще альтернативные потоки файла для хранение метаданных. Правда, они представляют собой, вроде бы, отдельные файлы (?). Или нет?
альтернативные потоки относятся больше к файловой системе NTFS, чем к виндозе. Например, в FAT эти потоки работать не будут, как и в остальных FS. Мало того, они даже теряются при передаче файла по сети, и если их всё-таки нужно сохранить, то файл пакуют RAR'ом, с взведённой галкой 'Сжимать потоки'.

Это не отдельный файл, а ещё один поток этого-же файла. Иногда в них пихают всякие мелочи, типа иконок и прочей лабуды, но т.к. за сохранность их никто не ручается, то широкого распространения они так и не получили. Хотя вещь рульная! Можно затолкать в альтернативный поток весь файл целиком, при этом для винды это будет файл с нулевым размером (если в основном потоке ничего нет). То-есть получаем файл-невидимку..
3
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
25.08.2018, 20:56  [ТС] 12
Цитата Сообщение от R71MT Посмотреть сообщение
если их всё-таки нужно сохранить, то файл пакуют RAR'ом, с взведённой галкой 'Сжимать потоки'.
Спасибо!, я не знал что так они сохраняются.
Цитата Сообщение от Mikl___ Посмотреть сообщение
может быть речь идет о bin-файлах? У таких файлов действительно есть заголовки.
Да, вот как раз хотелось бы узнать об отличиях. Текстовых от двоичных. На низком уровне.
Цитата Сообщение от Ethereal Посмотреть сообщение
RTF - файл размеченного текстового документа со структурой. .DOC .DOCX - файлы документов редактора MS-Word со структурой.
Правильно ли я понял, что, по сути, и .RTF, и .DOC/.DOCX представляют собой текстовые (не двоичные) файлы, но со структурой? Хотя, по поводу .DOC - где-то я слышал, что вроде это - исполняемый файл, в отличие от .DOCX.

Т.е. текстовый файл - это просто (именованная) совокупность символов ASCII. И все, больше в нем ничего нет? Текстовый файл может быть структурированным (.DOCX, .XML, ...) и неструктурированным (.TXT). Тогда как двоичный файл, помимо символов (исполняемого кода) имеет еще иную информацию. А вот - какую, только заголовки? Какие?
.bin - это двоичный файл без структуры, а
Цитата Сообщение от Mikl___ Посмотреть сообщение
dll/exe/sys-файлы
- это двоичные файлы со структурой?


Если так, то когда при копировании файла указывают флаги "t" или "b" - получается, речь идет не только о трансляции концов строк, но еще и о заголовках? Т.е. если двоичный файл копировать с флагом "t", то скопируются только символы, и управляющая информация скопирована не будет? Пока, честно говоря, не совсем понимаю разницу между разными типами копирования.
1
6765 / 2736 / 383
Регистрация: 17.02.2013
Сообщений: 4,042
26.08.2018, 01:55 13
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

Про текстовые и двоичные файлы без структуры. А различия как такового нет раз структуры нет. Просто если мы возьмем файл и все его байты нарисуем на экране символами согласно кодировке ASCII и получится осмысленный текст и ничего иного, то файл текстовый. А если получатся совершенно бессмысленные для человеческого глаза последовательности символов, то он двоичный. В двоичном файле может быть все что угодно - код для процессора, какие-то данные, что угодно. Но как правило к именам файлов прибавляют в конце расширение .txt и .bin, чтобы уже по имени было видно, что в нем.

Когда-то давно тексты представлялись только текстовыми файлами без какой-либо структуры и все редакторы с ними работали с одинаковым успехом. Потом кому-то пришло в голову хранить тексты вместе со шрифтами его букв, чтобы иметь не просто текст, а текст сразу подготовленный к красивой печати на принтере и появились форматы текстовых документов со структурой, которые только создавшим их редактором и понимались. Таким был к примеру редактор Лексикон. Потом вылез Майкрософт со своим Вордом, которым и картинки и таблицы стало можно в текст вставлять и опять таки файлы его текстовых документов только им и понимались. Проблема была в том, что у каждого редактора, работающего со структурированными файлами текстовых документов, был свой собственный формат никакой другой программе не понятный. Потому кому-то захотелось чтобы был формат текстовых документов, который бы сразу многие редакторы понимали и на разных платформах и им стал RTF. А Майкрософту хотелось обратного - чтобы с их документами не могла работать ни одна программа кроме Ворда, а то кто-то не поленился и разобрал формат вордовых документов и создал бесплатный Опер Оффис. И Майкрософт тут-же всем назло выпустила новую версию Ворда и в нем изменила формат документов, чтобы Опен Оффис с ними работать не мог и все вынужденно покупали Ворд. Это я совсем грубо рассказываю откуда именно такой сыр-бор пошел. Почему есть текстовые файлы без структуры и есть текстовые документы со структурой.

Добавлено через 1 минуту
Цитата Сообщение от Htext Посмотреть сообщение
Т.е. текстовый файл - это просто (именованная) совокупность символов ASCII. И все, больше в нем ничего нет?
Именно так.

Добавлено через 19 секунд
Цитата Сообщение от Htext Посмотреть сообщение
dll/exe/sys-файлы - это двоичные файлы со структурой?
Да.
Добавлено через 14 минут
Цитата Сообщение от Htext Посмотреть сообщение
.RTF, и .DOC/.DOCX представляют собой текстовые (не двоичные) файлы,
Текстовый/двоичный - это упоминание словами находится ли внутри файла текст или не текст. А внутри .RTF, и .DOC/.DOCX есть и то и другое. Там есть и текст и какие-то совсем не текстовые данные в его структурах - шрифты, разметка, картинки. Поэтому их просто называют файлами текстовых документов и не запариваются по поводу классификации.
Можешь просто понимать разделение текстовый/двоичный, как разделение воспринимать содержимое этого файла придется человеку или машине. Человеково это содержимое (текстовое) или компьютерово (двоичное). По видимому от этого разделения эти термины и пошли. А в текстовых документах .RTF, и .DOC/.DOCX тогда будет микс того и другого.
3
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
26.08.2018, 09:51  [ТС] 14
Спасибо всем! Но, все же остались два уточняющих вопроса.
1) Если я открою какой-нибудь исполняемый файл .exe в Windows при помощи Notepad++ , то в окне редактора появится ВСЕ содержимое файла (ну, кроме альтернативных потоков)? Или есть еще какие-то информация, данные, содержащиеся в этом файле, которую Notepad++ не покажет?
2) Все же, поясните, пожалуйста, по поводу разницы между текстовым "t" и бинарным "b" копированием файла: разница здесь только ли в разной трансляции концов строк или в чем-то еще?
Я понимаю, что это не Ассемблер, но в других темах спрашивать об этом, по-моему, бесполезно.
0
Эксперт .NET
10457 / 6399 / 1497
Регистрация: 25.05.2015
Сообщений: 19,464
Записей в блоге: 14
26.08.2018, 10:11 15
1. Все содержимое файла.
2. Для копирования файла на одной машине разницы нет.
Для FTP есть - если передать в текстовом режиме, файл может быть искажён. Примеры: File corruption during ftp transfer ASCII vs. BINARY, Пустые строки после каждого закрывающего тега в Notepad++

Реализация команды copy в Windows действительно имеет флаги бинарного и текстового режима. Бинарный копирует файл как есть, количество байт совпадает с размером файла. Текстовый режим копирует до первого вхождения символа конца файла (Ctrl+Z), и добавляет его в конец файла, если его там нет.
Об этом чёрным по белому написано в справке, которую вам надо было почитать: https://docs.microsoft.com/en-... mands/copy
2
Эксперт Hardware
Эксперт Hardware
6092 / 2337 / 390
Регистрация: 29.07.2014
Сообщений: 3,102
Записей в блоге: 4
26.08.2018, 10:32 16
текстовые редакторы показывают только печатные (на принтере) символы, а в бинарях имеются и непечатные символы, которые Notepad уже не сможет отобразить. Например, если в текстовый файл первым символом вставить непечатный символ, то Блокнот подымет тревогу, мол "не могу отобразить, файл является бинарным". В двоичных редакторах типа HxD непечатные символы представляются точками.

Цитата Сообщение от Htext Посмотреть сообщение
Правильно ли я понял, что, по сути, и .RTF, и .DOC/.DOCX представляют собой текстовые (не двоичные) файлы, но со структурой? Хотя, по поводу .DOC - где-то я слышал, что вроде это - исполняемый файл, в отличие от .DOCX.
если файл не текстовый, то в самом начале он имеет свою 4-байтную сигнатуру. По этой сигнатуре ОС выбирает подходящую программу для открытия этого файла. Вот пример:
Код
Файл TXT
------------------
00000000  CC E5 E4 20 E8 20 EF F0 EE E4 F3 EA F2 FB 20 EF  Мед и продукты п
00000010  F7 E5 EB EE E2 EE E4 F1 F2 E2 E0 0D 0A 0D 0A 20  человодства.... 

Файл DOC
------------------
00000000  D0 CF 11 E0 A1 B1 1A E1 00 00 00 00 00 00 00 00  РП.аЎ±.б........
00000010  00 00 00 00 00 00 00 00 3E 00 03 00 FE FF 09 00  ........>...юя..

Файл DOCX
------------------
00000000  50 4B 03 04 14 00 06 00 08 00 00 00 21 00 DD FC  PK..........!.Эь
00000010  95 37 66 01 00 00 20 05 00 00 13 00 08 02 5B 43  •7f... .......[C

Файл ZIP
------------------
00000000  50 4B 03 04 0A 00 00 00 00 00 0A 9A 10 4B 00 00  PK.........љ.K..
00000010  00 00 00 00 00 00 00 00 00 00 26 00 09 00 6F 63  ..........&...oc
Здесь видно, что у TXT-файлов нет никакой сигнатуры, а сразу идёт текст.
Но если посмотреть на сигнатуры файлов ZIP и DOCX, то ставится ясно, что Office-2007 тупо пакует свой файл как и ZIP - у них даже сигнатуры одинаковые. Попробуй взять какой-нить файл *.docx и сменить ему разрешение на *.zip. Перед тобой откроется архив с содержимым Word2007 файла. Он напичкан кучей XML-лок - в одних текст, в других форматирование и пр..
4
Эксперт .NET
10457 / 6399 / 1497
Регистрация: 25.05.2015
Сообщений: 19,464
Записей в блоге: 14
26.08.2018, 10:44 17
Цитата Сообщение от R71MT Посмотреть сообщение
которые Notepad уже не сможет отобразить
Notepad++, о котором вопрос, сможет-таки:
Какова Структура типичного текстового файла в Windows и Linux?
1
Эксперт Hardware
Эксперт Hardware
6092 / 2337 / 390
Регистрация: 29.07.2014
Сообщений: 3,102
Записей в блоге: 4
26.08.2018, 10:56 18
Rius, отобразить-то он бинарь отобразит,
только я имею ввиду - не в приглядном виде, типа такого:
Миниатюры
Какова Структура типичного текстового файла в Windows и Linux?  
3
357 / 118 / 20
Регистрация: 08.01.2015
Сообщений: 1,361
Записей в блоге: 1
26.08.2018, 13:33  [ТС] 19
Цитата Сообщение от R71MT Посмотреть сообщение
не в приглядном виде
Спасибо! Я понимаю, что нечитаемо будет. Я почему задался вопросом: иногда открываю бинарные исполняемые файлы - и думаю: все-таки, это - ВСЕ, что представляет собой открытый файл или есть что-то еще - то, что не показывается в Notepad++, но будет видно в каком-нибудь hex-редакторе, как в примере Rius. Теперь я понял, что ничего такого таинственного в файле нет. За исключением, опять же, разного рода альтернативных потоков и, быть может, некоторых недокументированных нюансов (если они есть).

Добавлено через 15 минут
Цитата Сообщение от Rius Посмотреть сообщение
Для FTP есть - если передать в текстовом режиме, файл может быть искажён.
Ну, да, это как раз проявление результата трансляции концов строк. Когда, скажем, из Windows \r\n (CR LF) транслируется в Linux'е в \n (или LF). Недавно на хостинге смотрю - стали файлы как бы недокачиваться, показываются меньшего размера на хостинге, чем у меня на компьютере. Оказывается, там обновили версию FTP и по умолчанию, с моими настройками клиента, файлы стали копироваться в текстовом, а не в бинарном режиме (хотя, настроек клиента я не менял). Уж в итоге, методом проб и ошибок - посчитал символы \r в исходном файле - как раз на их количество и отличались размеры исходного и конечного файлов.
Но, у меня-то все проще - сайты статико-динамические, если так выразиться. Все самописное и контролируемое. Везде, где необходимо проверить концы строк, в регулярных выражениях проверки типа [\r\n|\n\r|\n]. А вот у кого базы данных, готовые CMS - вот там, да, подобные искажения вполне могут привести к проблемам.

Добавлено через 14 минут
Цитата Сообщение от Rius Посмотреть сообщение
символа конца файла (Ctrl+Z), и добавляет его в конец файла, если его там нет.
Rius, а вот здесь Вы (точнее, не Вы лично, а Ваша ссылка) ввели меня в ступор. Вроде бы, такой конец файла присутствовал, разве что, в MS-DOS. А в файлах в современных ОС нет конца файла. Команды типа eof() лишь возвращают "конец файла" (т.е. как бы виртуальный "символ конца файла"), когда больше читать в файле уже нечего, но, на самом деле, такого символа теперь в файлах нет. Даже недавно тут на форуме было разбирательство об этом. А тут, на тебе, читаю об этом даже у MS... И ссылка-то - свежая. Странно. Может, по ссылке как раз и идет речь о старых файлах?
"You can copy an ASCII text file that uses an end-of-file character (CTRL+Z) to indicate the end of the file." - ведь речь не идет о том, что символ конца файла имеют ВСЕ файлы. Скорее, подразумевается, что файл МОЖЕТ иметь его.

Цитата Сообщение от R71MT Посмотреть сообщение
в самом начале он имеет свою 4-байтную сигнатуру. По этой сигнатуре ОС выбирает подходящую программу
Насколько я понял, это то единственное, что не будет показываться в Notepad++ ?

Добавлено через 3 минуты
Да, а ведь еще BOM (для указания кодировки) бывает... Хм.

Добавлено через 26 минут
По поводу конца файла - вот еще фраза: "This prevents Windows from treating CTRL+Z as an end-of-file character". Т.е., в самом деле, этот символ - опционален.
0
Эксперт .NET
10457 / 6399 / 1497
Регистрация: 25.05.2015
Сообщений: 19,464
Записей в блоге: 14
26.08.2018, 13:43 20
Htext, по ссылке идёт речь именно о Windows-утилите copy при копировании файлов в текстовом режиме и специальном значении байта 0x1A в нём, если он есть, и его добавлении в результирующий файл. Инфа актуальная. Но кто этим режимом может пользоваться - не знаю.
0
26.08.2018, 13:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2018, 13:43
Помогаю со студенческими работами здесь

Сохранение текстового файла с формате DOS\Windows
Добрый день. Возникла необходимость сохранять файл с формате DOS\Windows, а сохранение происходит...

Замена слов одного текстового файла словами из другого текстового файла
Даны два текстовых файла f1 и f2. Файл f1 содержит произвольный текст. Слова в тексте разделены...

Добавить в конец первого текстового файла содержимое второго текстового файла
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.

Конец файла. Есть ли разница в windows и linux?
Простая программа, получение данных из файла, запись в стек и вывод его на экран. К примеру, если в...

Задача про больницу с использованием windows формы и текстового файла
Помогите!!!На форме имеется Номер отделения, название отделение, кол-тво койко-мест, количество...

Какова структура двоичных файлов excel
Если знать структуру файлов EXCEL, то можно файл читать как двоичный. Может структура где-нибудь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru