我有一个试图从开放的IoDevice读取的函数。 在{error,Reason}的情况下,我想打印出文件名。
我该怎么做?
源代码:
read_file(IoDevice) ->
case read_file(IoDevice, []) of
{ok, OpCodes} ->
OpCodes;
{error, Reason} ->
io:format("Unable to read file ~s: ~s ~n", [File, Reason]),
[]
end.
答案 0 :(得分:4)
IoDevice
可以是进程ID或文件描述符。如果它是进程ID,您可以使用file:pid2name/1
获取文件名:
1> {ok,IoDevice} = file:open("/tmp/x.erl", [read]).
{ok,<0.43.0>}
2> {ok, Filename} = file:pid2name(IoDevice).
{ok,"/tmp/x.erl"}
如果IoDevice
是文件描述符,pid2name
将不起作用,我不知道在这种情况下获取文件名的方法。