これ静止軌道運用環境衛星(GOES)-R製品ユーザーガイド(PUG)NOAA(National Oceanic and Atmospheric Administration)の文書には、プレーンテキストファイル(§4.3)の次のようなやや長い説明が含まれています(強調項目)。
Unix のテキストファイル形式は、レベル 1b およびレベル 2+ 半静的ソースデータファイルの小さなサブセットに使用されます。 Unixテキストファイル形式(ファイル終了文字を除く)は、製品メタデータ値を含むnetCDFファイル仕様のXMLベースのNetCDF Markup Language(NcML)表現を格納するためにGRBメタデータパッケージに含まれています。 。
Unixテキストファイル形式は、可変長である可能性がある電子テキストの一連の行(レコードなど)です。 GOES-R地上システムの場合、電子テキスト、改行、およびファイル終了文字は米国情報交換標準コード(ASCII)に準拠しています。各行の終わりは改行文字です。ファイルの末尾にはファイルの終わりの文字があります。。
ファイルの内容の正確な説明ですか?ファイルの終わりは、ファイル(または他のストリーム)からデータを読み取れなくなったときにオペレーティングシステムまたはライブラリルーチンが返す条件だと思います。このバイトは実際にファイルに含まれていますか?
答え1
Unixテキストファイル形式は、可変長である可能性がある電子テキストの一連の行(レコードなど)です。各行の終わりは改行文字です。ファイルの末尾にはファイルの終わりの文字があります。
ファイルの内容の正確な説明ですか?
最後の太字部分までのみ可能です。しかし、私はファイルの終わりを使用するUnixyシステムを知りません。それらはすべてファイルの長さを1バイトで保存するため、そのような表示は必要ありません。
ただし、一部のシステムではファイルの終わり文字を使用しているようです。少なくともウィキペディアの主張それ:
CP / Mファイルシステムは128バイトの「レコード」の倍数でのみファイルの長さを記録するため、通常、Ctrl-Z文字はレコードの途中で終わった場合に意味のあるデータの終わりを示すために使用されます。
ファイルの長さが1つのブロックにのみ保存されている場合、データストリームの最後の行末をエンコードするにはいくつかのカスタマイズが必要です。もちろん、バイナリデータを処理するすべてのプログラムは、何らかの方法でより細かいファイルサイズを処理する必要があります。ただし、バイナリファイルの場合は、次の「追加」バイトを無視する方が簡単です。
MS-DOSではControl-ZがEOF表示として使用されているように見えますが、そこでもそれは必要ありません。
引用されたテキストは、現在システムにどのテキストファイルがあるのかを誤って知っているようです。私たちが見るとPOSIX規格の規定は何ですか?、NULバイトを含まずに行(改行で終わる)で構成されていることを除いて、ファイルの終わりやテキストファイルへの表示に関する言及はありません。
また見なさい:ファイルの最後の文字は何ですか?
この部分に関しては...
GOES-R地上システムでは、[...]とファイルの終わりの文字はASCII(American Standard Code for Information Interchange)に従います。
他の人がコメントしたように、ASCIIには少なくともその名前(*)にファイルの終わりの文字がありません。上記のControl-Zは、26または「代替」(SUB)で、「無効または無効な文字を表すために使用されます。」したがって、そのテキストだけではEOF文字が何であるか(使用されている場合)を知ることは困難です。
(*「End of Text」(ETX、コード3)、「End of Transfer」(EOT、コード4)、「End of Transfer Block」(ETB、23)、「End of Medium」(EOM、25)そして「ファイルで区切られた」お守り」(FS、28)もあります。
ファイルの終わりは、ファイル(または他のストリーム)からデータを読み取れなくなったときにオペレーティングシステムまたはライブラリルーチンが返す条件だと思います。
もちろん。read()
ファイルの終わりに達すると、システムコールは0バイト(エラーなし)を返し、一部のstdio関数(getchar()
)には驚くほど呼び出されない戻り特殊値がありますEOF
。
また見なさい:EOTとEOFの違い
答え2
これは彼らが議論しているファイル形式に非常に具体的に見えます。通常、ファイルにはEOF文字は必要ありません。 Non は、プログラムが明示的に作成せずに追加されます。
ASCIIテーブルを確認してみると、EOF文字は表示されません。 EOTまたはFSの役割に言及することもできますが、これは不明です。https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html
ただし、一部のファイル形式では、ファイルの末尾にマーカーを追加するのが一般的です。特に通信のためのシンプルなファイル形式です。これにより、ファイルが誤って切り取られるのを防ぎます。ファイルが特定のマークで終わる必要があり、そのマークが最後にのみ表示される場合は、ファイル全体を受け取ったのか、それとも一部を受け取ったのかを簡単に知ることができます。私が読んでみると、彼らはこの種の印に言及していました。
答え3
それらが言及する「ファイルの終わり」文字は、ファイルの最後の文字として現れる単一の改行文字である可能性があります。 UNIXおよびUNIXのようなシステムのほとんどの既存のテキストファイルは、このように終了cat
します。コマンド(または同様のコマンド)を使用してファイルの内容を表示し、次のコマンドプロンプトが独自の行にあることを確認できます。
一部の正常に動作しないアプリケーションは、最終改行文字が表示されない場合、実際にファイルを正しく解析できません。この点で、これはUTF-8でエンコードされたテキストのUnicodeバイトオーダーマークと少し似ています。これはまったく必要ありませんが(実際にはほとんどの標準によると存在しないはずです)、一部のアプリケーションでは解釈を拒否します。 UTF-8にはないからです。
しかし、オペレーティングシステム自体の観点から見ると、そのような「役割」は存在しません。ファイルシステムはファイルの正確なサイズを保存し、ファイルを読み込むように要求された場合、オペレーティングシステムは単一の文字だけでなく、そのような概念を持つことさえ意味がないほど全体的に多くのデータを返します。
EOT 制御コード (^D) は、UNIX 系のインタラクティブ入力ストリームの終わりを表すために広く使用されているため、この概念と混同します。 。 )。これは、いくつかの通信リンクを介して送信されます。これは、^Zが対話型入力および実際のファイルで実際にファイルの終わりを表すために使用されるDOSシステムとは大きく異なります。 EOT制御コードは、実際にアプリケーションが見るデータストリームには現れません。端末で解釈されて^ Dが見つかると、アプリケーションにファイルの終了条件を通知します。