2012-05-02 11 views
0

テキストファイルを読むためにバイトレベル関数が必要な理由結局のところ、それは文字列の配列を含むファイルです。なぜ文字列に直接格納することができないのですか?どの言語(java、c、C++、またはas3)のバイトレベル関数を読み込む必要があるのですか?いないすべてのテキストを均等にレンダリングされているのでテキストファイルを読み込むためにバイトレベル関数が必要なのはなぜですか?

var a_str:String = new String(); 

var myFile:File ; 

a_str = String(myFile.read("xyz.txt")) ; 

trace (a_str) ; // << content of the file xyz.txt 
+0

方法あなたはそのほとんどすべてがバイトで構成された、またはバイトのブロックされていますなどなど、現代的なプロセッサアーキテクチャ、ディスク、ファイルシステム、について少し学習について。標準は、文字の「何とか何とか」特別なセットが使用されているものをテキスト文字問題なし – Ingo

答えて

0

文字の末尾をどのように保存しますか?妥当な長さの文字列については、それがテキストに表示され、ファイルの終わりとして扱われ、ファイルが途中で終了する可能性があります。

+0

は、あなたは常に衝突の問題を持って、行うことができます。そのため、テキスト文字を使用せずに定義されています。 –

+0

など、ファイルの終わりを表して戻ってくることに作成されなかった場合、私は思う –

+1

正式な "eof"マーカーの概念は少し奇妙です。どのエンコーディングでもファイルの終わりは、現実的には単に文字通りのEOFである可能性があります。しかし、対応する読者は、EOFがMBCS文字を読む途中で渡されたかどうかを認識しなければならない。 –

1

:私はこのような何かを行うことができれば

は、それは非常に容易になる可能性があります。古いキャラクタセットの中には、1バイト文字で表されるものもあれば、マルチバイトであるものもあります。その結果、それぞれのライターは文字だけでなくバイトを操作できなければなりません。

0

短い答えですか?メモリは、通常、バイトアドレス可能であるため、同じことが期待されるファイルを読み込みます。ほとんどのC言語のプログラミング言語では、文字列は通常、単にヌル文字で終わるバイトの集合です。NUL(0x00)です。

+0

-1:NULで終わる(NULLではなく、ポインタです) "文字列"はC言語でのみ使用されます。初期のパスカルでも長さが別々に保存されていましたので、NUL文字(長さの制限はあります)言語には長さフィールドを持つUnicode文字列があります。 *ファイル*は実際にはバイトですが、文字列のままであれば文字エンコーディングを気にせずに*テキスト*の抽象化を提供するプログラミング言語では比較的簡単です(ただし半分にしてはいけません)例えば、ネットワークやディスクに) – delnan

+0

@delnanあなたのコメントを反映するために私の答えを編集しました。私は実際にCを考えていたのは、それが現代のプログラミング言語やオペレーティングシステムの多くが基づいているからです。 – zje

+0

"Cスタイルのプログラミング言語"とは何でしょうか? C++、Java、C#のような典型的な候補は、NULで終わらない文字列型を持ち、そのうちの2つは文字列にUnicode(ただしUTF-16のみ)を使用します。 – delnan

0

文字列にファイル全体を読み込むことができる言語がたくさんあります。 Pythonはできます。私はPerlができると確信しています。その機能は、ファイルをバイト単位で読み込む低レベルの機能(もちろん、より大きなチャンクが提供されるかどうかに関わらず、一連のバイトとして機能する)に基づいて構築されています。

あなたが使用しているツールが気に入らない場合は、いくつかのより良いものを取得します。

関連する問題