Только не смейтесь над убогим
Надо было мне тут совершить обход директорий и вытащить список как директорий, так и файлов — с размерами файлов.
Значит, наваял я вот такое. На названия не обращайте внимания, тяжелое наследие первых родов ежей против шерсти
-module(mamut_parse_dir).
-export([parse_dir/1]).
%% Вызываем, собственно, вот эту самую функцию
parse_dir(PathToDir) ->
case filelib:is_dir(PathToDir) of
false -> {error, not_a_dir};
true ->
{Dir, parse_dirs(get_dirs(PathToDir)), get_files(PathToDir)}.
end.
parse_dirs([]) ->
[];
parse_dirs([H|T]) ->
[H, get_files(H)] ++ [parse_dirs(T)].
%% Берем список поддиректорий, стырено здесь: http://schemecookbook.org/Erlang/FileWalkDirectoryTree
get_dirs(Path) ->
P = filename:join(Path, "*"),
lists:filter(
fun(X) -> filelib:is_dir(X) end,
filelib:wildcard(P)).
%% Берем список файлов, творчески обработанная функчия сверху
%% Возвращаю кортеж {имя_файла, размер_файла}
get_files(Path) ->
P = filename:join(Path, "*"),
lists:map(fun(X) -> {X, filelib:file_size(X)} end,
lists:filter(
fun(X) -> filelib:is_regular(X) end,
filelib:wildcard(P))).
В общем мне понравилось
Но вопрос — а можно еще кратчее и красивше
... << RSDN@Home 1.2.0 alpha rev. 619>>