2012-05-02 36 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

我認爲,如果創建一個標準來創建「blah blah」特殊字符集將代表文件結尾,返回等,那麼可以這樣做。 –

+0

無論使用哪種文本字符,都會遇到碰撞問題。這就是爲什麼它沒有使用文本字符而定義的原因。 –

+1

正式的「eof」標記的概念有點奇怪。任何編碼中的文件結尾都可以真實地簡單地表示文字EOF。但是,相應的閱讀器必須識別EOF是否在讀取MBCS字符的過程中通過。 –

1

。一些較舊的字符集以單字節字符表示,而其他字符集則是多字節。因此,每個作家都必須能夠操縱字節,而不僅僅是字符。

0

簡短的答案?內存通常是可以字節尋址的,所以讀取文件時你會期望同樣的事情。在大多數C風格的編程語言中,字符串通常只是一個字節集合,通常以空字符NUL(0x00)結尾。

+0

-1:NUL結尾(不是NULL,這是一個指針)「strings」僅用於C中。即使早期的Pascal單獨存儲了長度,因此允許NUL字符(儘管長度有限制),並且今天的主要語言具有長度字段的Unicode字符串。 *文件*確實是字節,但是對於編程語言來說,它比較容易(儘管你不應該把它看作是一半),只要它仍然是一個字符串就可以提供* text *的抽象,而不必考慮字符編碼(而不是去,比如說,到網絡或磁盤)。 – delnan

+0

@delnan我編輯了我的答案以反映您的意見。我真的只是在想C,因爲這是許多現代編程語言和操作系統的基礎。 – zje

+0

你認爲什麼是「C風格的編程語言」?像C++,Java和C#這樣的典型候選人都有非NUL終止的字符串類型,其中三個使用unicode(儘管只有UTF-16)用於字符串。 – delnan

0

有很多可以將整個文件讀入字符串的語言。 Python可以;我很確定Perl可以。該功能基於較低級別的功能,當然每次字節讀取文件(或者,相當於字節序列,不管是否提供更大的塊)。

如果您不喜歡您使用的工具,可以選擇更好的工具。

相關問題