io_lib
io_lib
模块
io_lib
模块摘要
I/O库功能。
描述
此模块包含用于转换字符串(字符列表)的函数。它们用于实现io
模块中的功能。无法保证从某些函数返回的字符列表是平坦的,它们可以是深层列表。函数lists:flatten/1
可用于展平深层列表。
数据类型
chars() = [char() |
chars()
]
continuation()
由...fread/3
返回的延续。
depth() = -1 | integer() >= 0
fread_error() =
atom |
based |
character |
float |
format |
input |
integer |
string |
unsigned
fread_item() = string() | atom() | integer() | float()
latin1_string() = [
unicode:latin1_char()
]
format_spec() =
#{control_char := char(),
args := [any()],
width := none | integer(),
adjust := left | right,
precision := none | integer(),
pad_char := char(),
encoding := unicode | latin1,
strings := boolean()}
其中:
control_char
是控制序列的类型:$P
,$w
等等。
args
是控制序列使用的参数列表,或者如果控制序列不使用任何参数,则为空列表。
width
字段宽度。
adjust
是调整。
precision
是打印参数的精确性。
pad_char
是填充字符。
- 如果存在转换修饰符t,则编码设置为true。
- 如果修饰符l存在,则字符串设置为false。
输出
build_text(FormatList) -> chars()
类型
有关详细信息,请参阅scan_format/2
...
char_list(Term) -> boolean()
类型
如果Term是Unicode范围内的字符的平面列表,则返回true,否则返回false。
deep_char_list(Term) -> boolean()
类型
如果Term是Unicode范围中可能较深的字符列表,则返回true,否则返回false。
deep_latin1_char_list(Term) -> boolean()
类型
如果Term是ISO Latin-1范围内可能较深的字符列表,则返回true,否则返回false。
format(Format, Data) -> chars()
fwrite(Format, Data) -> chars()
类型
返回表示Data
根据的格式化的字符列表Format
。有关可用格式选项的详细说明,请参阅io:fwrite/1,2,3
。如果格式字符串或参数列表包含错误,则会生成错误。
当且仅当在格式字符串(即~ts或~tc)中使用Unicode转换修饰符时,结果列表可以包含超出ISO Latin-1字符范围(即数字> 255)的字符。如果是这样,结果仍然是普通的Erlang string(),并且可以在任何允许Unicode数据的上下文中使用。
fread(Format, String) -> Result
类型
尝试String
按照中的控制顺序阅读Format
。有关可用格式选项的详细说明,请参阅io:fread/3
。假定String
包含整行。
函数返回:
{ok, InputList, LeftOverChars}
字符串被读出了。InputList
成功匹配和读取项的列表,以及LeftOverChars
是否未使用输入字符。
{more, RestFormat, Nchars, InputStack}
已读取字符串,但需要更多输入才能完成原始格式字符串。RestFormat
是剩余的格式字符串,Nchars
扫描的字符数,以及InputStack
与此匹配的输入的反向列表。
{error, What}
读取操作失败,参数What
提示错误。
例子:
3> io_lib:fread("~f~f~f", "15.6 17.3e-6 24.5").
{ok,[15.6,1.73e-5,24.5],[]}
fread(Continuation, CharSpec, Format) -> Return
类型
这是可重入格式的阅读器。首次调用函数的继续必须是[]
。有关可重入输入方案如何工作的完整描述,请参见Armstrong,Virding,Williams:'Erlang中的并发编程',第13章。
函数返回:
{done, Result, LeftOverChars}
输入完成。其结果如下:
{ok, InputList}
字符串被读出了。InputList
成功匹配和读取项的列表,以及LeftOverChars
剩下的角色。
eof
遇到文件结束。LeftOverChars
是否未使用输入字符。
{error, What}
发生错误和参数What
提示错误。
**`{more, Continuation}`**
构建一个术语需要更多的数据。Continuation
必须传递给fread/3
当更多的数据可用时。
indentation(String,StartIndent) - > integer()
类型
如果已经打印了字符串,则从StartIndent开始返回缩进。
latin1_char_list(Term) -> boolean()
类型
如果Term是ISO Latin-1范围内的字符的平面列表,则返回true,否则返回false。
nl() -> string()
返回表示新行字符的字符列表。
print(Term) -> chars()
print(Term, Column, LineLength, Depth) -> chars()
类型
返回表示Term的字符列表,但将表示长度超过一行的表示切分为多行并合理缩进每行。 还尝试检测并输出可打印字符的列表作为字符串。
Column
起始列;默认值为1。
LineLength
最大行长;默认值为80。
Depth
最大打印深度;默认值为-1,这意味着没有限制。
printable_latin1_list(Term) -> boolean()
类型
如果Term是可打印ISO Latin-1字符的平面列表,则返回true,否则返回false。
printable_list(Term) -> boolean()
类型
如果Term是可打印字符的平面列表,则返回true,否则返回false。
在这种情况下,可打印字符是由启动标志+ pc到Erlang VM确定的; 见io:printable_range / 0和erl(1)。
printable_unicode_list(Term) -> boolean()
类型
如果Term是可打印的Unicode字符的平面列表,则返回true,否则返回false。
scan_format(Format, Data) -> FormatList
类型
返回与指定格式字符串对应的列表,其中控制序列已被相应的元组替换。此列表可传递给:
- build_text / 1与format(Format,Args)具有相同的效果
unscan_format/1
得到相应的一对Format
和Args
(每个*
和相应的参数展开为数值)
一个典型的使用这个功能是替代像无限大小的控制序列~w
和~p
与深度限定的变体~W
和~P
格式化为文本中,例如,记录器之前。
unscan_format(FormatList) -> {Format, Data}
类型
有关详细信息,请参阅scan_format/2
...
write(Term) -> chars()
write(Term, Depth) -> chars()
write(Term, Options) -> chars()
类型
返回表示的字符列表Term
。参数Depth
控制着写入结构的深度。达到指定深度时,低于此级别的所有内容都将替换为“ ...
”。Depth
默认为-1,这意味着没有限制。
例子:
1> lists:flatten(io_lib:write{1,[2],[3],[4,5],6,7,8,9})).
"{1,[2],[3],[4,5],6,7,8,9}"
2> lists:flatten(io_lib:write{1,[2],[3],[4,5],6,7,8,9}, 5)).
"{1,[2],[3],[...],...}"
write_atom(Atom) -> chars()
类型
返回打印原子所需的字符列表。Atom
...
write_atom_as_latin1(Atom) -> latin1_string()
类型
返回打印原子所需的字符列表。Atom
.非拉丁文-1个字符被转义。
write_char(Char) -> chars()
类型
返回在Unicode字符集中打印字符常量所需的字符列表。
write_char_as_latin1(Char) -> latin1_string()
类型
返回在Unicode字符集中打印字符常量所需的字符列表。非拉丁字符被转义。
write_latin1_char(Latin1Char) -> latin1_string()
类型
返回在ISO拉丁-1字符集中打印字符常量所需的字符列表。
write_latin1_string(Latin1String) -> latin1_string()
类型
返回打印Latin1String
为字符串所需的字符列表。
write_string(String) -> chars()
类型
返回打印String
为字符串所需的字符列表。
write_string_as_latin1(String) -> latin1_string()
类型
返回将字符串打印为字符串所需的字符列表。 非拉丁-1字符被转义。