tango.io.UnicodeFile (r4795)
License:
BSD style: see license.txt
Version:
Initial release: December 2005
Author:
Kris
-
class UnicodeFile(T) ¶#
- 读和写 unicode 文件。
- 就我们的目的而言 ,unicode文件是一个文本材料的编码。这个模块的作用是成为外部编码和程序员定义的内部编码间的接口。这个内部编码通过模板参数 T声明,而外部编码被指定或派生。
支持三种内部编码: char, wchar, and dchar。 在这里的方法在这种类型的数组上操作。如,read()返回那种类型的一个数组,而write() 和append()方法期待一个所说类型的数组。
支持如下的外部编码:
Encoding.Unknown Encoding.UTF_8 Encoding.UTF_8N Encoding.UTF_16 Encoding.UTF_16BE Encoding.UTF_16LE Encoding.UTF_32 Encoding.UTF_32BE Encoding.UTF_32LE这些可以分为隐式和显式编码。这里是隐式编码子集:
Encoding.Unknown Encoding.UTF_8 Encoding.UTF_16 Encoding.UTF_32隐式编码可以用于“发现”未知的编码,通过检查最初的几个字节的文件内容为签字。对于所有文件这个签名是可选的,但往往这样写的内容都是自描述的。当编码是未知的,用非显式编码会导致read()方法去查找一个签名并相应的自行调节。一个ZWNBSP字符可能被误认为签名,今天的文件都假定使用单词粘合剂(WORD-JOINER)字符代替。
如下是显式编码:
Encoding.UTF_8N Encoding.UTF_16BE Encoding.UTF_16LE Encoding.UTF_32BE Encoding.UTF_32LE- 这一组编码是在文件编码已知道的情况下使用的。这些应该用于写或添加,因为写内容必须用已知的格式。应该注意的是,在读操作期间,一个签名的出现和这些显式种类是冲突的。
read()方法返回当前文件内容,面write()方法设置文件内容、文件长度为提供的数组。append()方法添加内容到文件尾。当添加时注意确保文件存在和当前编码正确匹配是你的职责。
要检查文件系统、文件和目录状态和别的工具通过FilePath超类的方法。
更多信息见这些链接:
http://www.utf-8.com/ http://www.hackcraft.net/xmlUnicode/ http://www.unicode.org/faq/utf_bom.html/ http://www.azillionmonkeys.com/qed/unicode.html/ http://icu.sourceforge.net/docs/papers/forms_of_unicode/-
this(char[] path, Encoding encoding) ¶#
- 从提供的文件路径构建一个 Unicode文件。给定编码表示外部文件编码,是 Encoding.xx类型中的一个。 UnicodeFile opCall(char[] name, Encoding encoding) [static] ¶#
- 调用方快捷创建一个 Unicode文件实例。这可以用以结构用法相同的语法,因此揭示了一个迁移路径。 char[] toString() ¶#
- 返回关联的文件路径。 Encoding encoding() ¶#
- 返回当前的编码。这既可以是原先指定的编码 ,也可以通过检查文件内容的 bom(字节序, Bytes Order Mark)获得的推导出的编码。后者作为 read()方法的一个部分执行。 UnicodeBom!(T) bom() ¶#
- 返回关联的 bom(字节序)的实例。用这个来查找关于编码状态的更多信息。 T[] read() [final] ¶#
- 返回文件内容。内容通过检查 bom签名把它剥离。如果签名出现的地方,按照编码的类型它不是(该种编码),将会抛出一个异常。相反,在当前编码预期被表示的一种的地方没有已知签名,一个异常被抛出。 void write(T[] content, bool writeBom) [final] ¶#
- 设置文件内容和长度反映给定的数组。内容被相应的编码。 void append(T[] content) [final] ¶#
- 添加内容到文件中,内容被相应地编码。注意确保文件存在和当前编码正确匹配是你的职责。