1 | |
Какова Структура типичного текстового файла в Windows и Linux?25.08.2018, 14:12. Показов 6835. Ответов 31
Метки нет (Все метки)
0
|
25.08.2018, 14:12 | |
Ответы с готовыми решениями:
31
Сортировка текстового файла. Структура "Студент" Чтение текстового файла (Windows Phone) Передача файла по сети из Windows в Linux Считывание текстового файла команда Windows тип |
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
|
25.08.2018, 14:56 [ТС] | 3 |
Ethereal, спасибо, но, я имел в виду - именно структуру. Т.е. вначале, я так понимаю, в файлах *nix идет некий заголовок, там есть тип файла, ну, и т.п. Вот об этом бы хотелось узнать детальнее. Ведь в текстовых редакторах показывается лишь, собственно, содержимое текстового файла.
Потом, скажем, в Windows есть еще альтернативные потоки файла для хранение метаданных. Правда, они представляют собой, вроде бы, отдельные файлы (?). Или нет?
0
|
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
|
|
25.08.2018, 15:23 | 4 |
Никаких метаданных в текстовых файлах нет и быть не может.
Вот это "содержимое" - и есть весь файл, больше там ничего нет, никакой структуры.
4
|
Ушел с форума
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 |
Нету структуры, нету заголовка. И я об этом уже говорил :
Добавлено через 28 минут
Тут лучше было бы вместо .bin написать словами "двоичных". А то расширение .bin как правило лепится к тем двоичным файлам, что тоже не имеют какой-либо заранее заданной структуры. Это я скорей для тс-а поясняю. Во избежание. Т.е. .txt - это текстовый файл без структуры, а .bin - двоичный файл без структуры.
3
|
Ушел с форума
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
|
Ушел с форума
16262 / 7587 / 1061
Регистрация: 11.11.2010
Сообщений: 13,609
|
|
25.08.2018, 16:48 | 9 |
0
|
6765 / 2736 / 383
Регистрация: 17.02.2013
Сообщений: 4,042
|
|
25.08.2018, 17:11 | 10 |
Чтобы не путать .TXT называют текстовыми файлами, а .RTF .DOC .DOCX обзывают файлами текстовых документов. Как бы словечко "документ" намекает, что это файл от какой-то программы, которая эти документы создает. Т.е. файл имеет структуру только какой-то программе понятную.
Добавлено через 54 секунды Да я понял. Тут главное тс-а не запутать.
3
|
Эксперт Hardware
|
|
25.08.2018, 19:00 | 11 |
альтернативные потоки относятся больше к файловой системе NTFS, чем к виндозе. Например, в FAT эти потоки работать не будут, как и в остальных FS. Мало того, они даже теряются при передаче файла по сети, и если их всё-таки нужно сохранить, то файл пакуют RAR'ом, с взведённой галкой 'Сжимать потоки'.
Это не отдельный файл, а ещё один поток этого-же файла. Иногда в них пихают всякие мелочи, типа иконок и прочей лабуды, но т.к. за сохранность их никто не ручается, то широкого распространения они так и не получили. Хотя вещь рульная! Можно затолкать в альтернативный поток весь файл целиком, при этом для винды это будет файл с нулевым размером (если в основном потоке ничего нет). То-есть получаем файл-невидимку..
3
|
25.08.2018, 20:56 [ТС] | 12 |
Спасибо!, я не знал что так они сохраняются.
Да, вот как раз хотелось бы узнать об отличиях. Текстовых от двоичных. На низком уровне. Правильно ли я понял, что, по сути, и .RTF, и .DOC/.DOCX представляют собой текстовые (не двоичные) файлы, но со структурой? Хотя, по поводу .DOC - где-то я слышал, что вроде это - исполняемый файл, в отличие от .DOCX. Т.е. текстовый файл - это просто (именованная) совокупность символов ASCII. И все, больше в нем ничего нет? Текстовый файл может быть структурированным (.DOCX, .XML, ...) и неструктурированным (.TXT). Тогда как двоичный файл, помимо символов (исполняемого кода) имеет еще иную информацию. А вот - какую, только заголовки? Какие? .bin - это двоичный файл без структуры, а - это двоичные файлы со структурой? Если так, то когда при копировании файла указывают флаги "t" или "b" - получается, речь идет не только о трансляции концов строк, но еще и о заголовках? Т.е. если двоичный файл копировать с флагом "t", то скопируются только символы, и управляющая информация скопирована не будет? Пока, честно говоря, не совсем понимаю разницу между разными типами копирования.
1
|
6765 / 2736 / 383
Регистрация: 17.02.2013
Сообщений: 4,042
|
|
26.08.2018, 01:55 | 13 |
Сообщение было отмечено Mikl___ как решение
Решение
Про текстовые и двоичные файлы без структуры. А различия как такового нет раз структуры нет. Просто если мы возьмем файл и все его байты нарисуем на экране символами согласно кодировке ASCII и получится осмысленный текст и ничего иного, то файл текстовый. А если получатся совершенно бессмысленные для человеческого глаза последовательности символов, то он двоичный. В двоичном файле может быть все что угодно - код для процессора, какие-то данные, что угодно. Но как правило к именам файлов прибавляют в конце расширение .txt и .bin, чтобы уже по имени было видно, что в нем.
Когда-то давно тексты представлялись только текстовыми файлами без какой-либо структуры и все редакторы с ними работали с одинаковым успехом. Потом кому-то пришло в голову хранить тексты вместе со шрифтами его букв, чтобы иметь не просто текст, а текст сразу подготовленный к красивой печати на принтере и появились форматы текстовых документов со структурой, которые только создавшим их редактором и понимались. Таким был к примеру редактор Лексикон. Потом вылез Майкрософт со своим Вордом, которым и картинки и таблицы стало можно в текст вставлять и опять таки файлы его текстовых документов только им и понимались. Проблема была в том, что у каждого редактора, работающего со структурированными файлами текстовых документов, был свой собственный формат никакой другой программе не понятный. Потому кому-то захотелось чтобы был формат текстовых документов, который бы сразу многие редакторы понимали и на разных платформах и им стал RTF. А Майкрософту хотелось обратного - чтобы с их документами не могла работать ни одна программа кроме Ворда, а то кто-то не поленился и разобрал формат вордовых документов и создал бесплатный Опер Оффис. И Майкрософт тут-же всем назло выпустила новую версию Ворда и в нем изменила формат документов, чтобы Опен Оффис с ними работать не мог и все вынужденно покупали Ворд. Это я совсем грубо рассказываю откуда именно такой сыр-бор пошел. Почему есть текстовые файлы без структуры и есть текстовые документы со структурой. Добавлено через 1 минуту Именно так. Добавлено через 19 секунд Да. Добавлено через 14 минут Текстовый/двоичный - это упоминание словами находится ли внутри файла текст или не текст. А внутри .RTF, и .DOC/.DOCX есть и то и другое. Там есть и текст и какие-то совсем не текстовые данные в его структурах - шрифты, разметка, картинки. Поэтому их просто называют файлами текстовых документов и не запариваются по поводу классификации. Можешь просто понимать разделение текстовый/двоичный, как разделение воспринимать содержимое этого файла придется человеку или машине. Человеково это содержимое (текстовое) или компьютерово (двоичное). По видимому от этого разделения эти термины и пошли. А в текстовых документах .RTF, и .DOC/.DOCX тогда будет микс того и другого.
3
|
26.08.2018, 09:51 [ТС] | 14 |
Спасибо всем! Но, все же остались два уточняющих вопроса.
1) Если я открою какой-нибудь исполняемый файл .exe в Windows при помощи Notepad++ , то в окне редактора появится ВСЕ содержимое файла (ну, кроме альтернативных потоков)? Или есть еще какие-то информация, данные, содержащиеся в этом файле, которую Notepad++ не покажет? 2) Все же, поясните, пожалуйста, по поводу разницы между текстовым "t" и бинарным "b" копированием файла: разница здесь только ли в разной трансляции концов строк или в чем-то еще? Я понимаю, что это не Ассемблер, но в других темах спрашивать об этом, по-моему, бесполезно.
0
|
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
|
|
26.08.2018, 10:32 | 16 |
текстовые редакторы показывают только печатные (на принтере) символы, а в бинарях имеются и непечатные символы, которые Notepad уже не сможет отобразить. Например, если в текстовый файл первым символом вставить непечатный символ, то Блокнот подымет тревогу, мол "не могу отобразить, файл является бинарным". В двоичных редакторах типа HxD непечатные символы представляются точками.
если файл не текстовый, то в самом начале он имеет свою 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 Но если посмотреть на сигнатуры файлов ZIP и DOCX, то ставится ясно, что Office-2007 тупо пакует свой файл как и ZIP - у них даже сигнатуры одинаковые. Попробуй взять какой-нить файл *.docx и сменить ему разрешение на *.zip. Перед тобой откроется архив с содержимым Word2007 файла. Он напичкан кучей XML-лок - в одних текст, в других форматирование и пр..
4
|
26.08.2018, 13:33 [ТС] | 19 |
Спасибо! Я понимаю, что нечитаемо будет. Я почему задался вопросом: иногда открываю бинарные исполняемые файлы - и думаю: все-таки, это - ВСЕ, что представляет собой открытый файл или есть что-то еще - то, что не показывается в Notepad++, но будет видно в каком-нибудь hex-редакторе, как в примере Rius. Теперь я понял, что ничего такого таинственного в файле нет. За исключением, опять же, разного рода альтернативных потоков и, быть может, некоторых недокументированных нюансов (если они есть).
Добавлено через 15 минут Ну, да, это как раз проявление результата трансляции концов строк. Когда, скажем, из Windows \r\n (CR LF) транслируется в Linux'е в \n (или LF ). Недавно на хостинге смотрю - стали файлы как бы недокачиваться, показываются меньшего размера на хостинге, чем у меня на компьютере. Оказывается, там обновили версию FTP и по умолчанию, с моими настройками клиента, файлы стали копироваться в текстовом, а не в бинарном режиме (хотя, настроек клиента я не менял). Уж в итоге, методом проб и ошибок - посчитал символы \r в исходном файле - как раз на их количество и отличались размеры исходного и конечного файлов. Но, у меня-то все проще - сайты статико-динамические, если так выразиться. Все самописное и контролируемое. Везде, где необходимо проверить концы строк, в регулярных выражениях проверки типа [\r\n|\n\r|\n] . А вот у кого базы данных, готовые CMS - вот там, да, подобные искажения вполне могут привести к проблемам.Добавлено через 14 минут 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." - ведь речь не идет о том, что символ конца файла имеют ВСЕ файлы. Скорее, подразумевается, что файл МОЖЕТ иметь его. Насколько я понял, это то единственное, что не будет показываться в Notepad++ ? Добавлено через 3 минуты Да, а ведь еще BOM (для указания кодировки) бывает... Хм. Добавлено через 26 минут По поводу конца файла - вот еще фраза: "This prevents Windows from treating CTRL+Z as an end-of-file character". Т.е., в самом деле, этот символ - опционален.
0
|
26.08.2018, 13:43 | 20 |
Htext, по ссылке идёт речь именно о Windows-утилите copy при копировании файлов в текстовом режиме и специальном значении байта 0x1A в нём, если он есть, и его добавлении в результирующий файл. Инфа актуальная. Но кто этим режимом может пользоваться - не знаю.
0
|
26.08.2018, 13:43 | |
26.08.2018, 13:43 | |
Помогаю со студенческими работами здесь
20
Сохранение текстового файла с формате DOS\Windows Замена слов одного текстового файла словами из другого текстового файла Добавить в конец первого текстового файла содержимое второго текстового файла Конец файла. Есть ли разница в windows и linux? Задача про больницу с использованием windows формы и текстового файла Какова структура двоичных файлов excel Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |