这边就写点小代码,不求写得很精准能用就好了(跪....
统计文件数量:
%%%=============================== %%% @author cc %%% @description %%% 查找并统计对应后缀的文件 %%% @end %%%=============================== -module(seek_file). -export([seek/1,count/2]). -define(FLAG,seekfile). %%程序启动入口,初始化一个监听进程用于统计 seek(Dir) -> Pid=spawn(seek_file,count,[0,[]]), case whereis(?FLAG) of undefined -> register(?FLAG,Pid); _ -> unregister(?FLAG),register(?FLAG,Pid) end, seek_inner(Dir,0). %%搜寻文件的函数 seek_inner(Dir,No) -> Files=filelib:wildcard(Dir ++ "/*"), deal_with(Files,No). %%用于监听的函数 count(Sum,List) -> receive {add,X,File} -> count(Sum+X,[File] ++ List); stop -> io:format("~p~n ~p~n",[Sum,List]) end. %%deal_with/2用于对文件进行判断 %%这边用了很多的递归 如果No为0并 %%且列表为空了那么程序就结束了 deal_with([],No) when No/=0 -> ok; deal_with([],No) -> ?FLAG ! stop; deal_with([File|Others],No) -> case filelib:is_dir(File) of %%间接递归的函数标记为1 true -> seek_inner(File,1); false -> case re:run(File,".*\\.java$",[]) of nomatch -> ok; {match,_}-> ?FLAG ! {add,1,File} end end, deal_with(Others,No).
输出:
22> c(seek_file). seek_file.erl:33: Warning: variable 'No' is unused {ok,seek_file} 23> seek_file:seek("g:/workbench/web"). 5 ["g:/workbench/web/huffman/src/org/cc/mediawork/Huffman.java", "g:/workbench/web/huffman/src/org/cc/mediawork/Huffman 2.java", "g:/workbench/web/huffman/src/org/cc/mediawork/Huffman - 3.java", "g:/workbench/web/huffman/src/org/cc/mediawork/Huffman - .java", "g:/workbench/web/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/first/org/apache/jsp/index_jsp.java"] stop
相关推荐
“即便我已经使用Erlang多年,在编程的时候仍然需要参考《Erlang编程指南》。不同层次的Erlang程序员都会发现本书是有价值的学习和参考资料..., 《Erlang编程指南》每章末尾都提供了练习题,并且由简单的示例贯穿全书。
通过分析`client.erl`,我们可以逐步了解Erlang编程的核心概念,并进一步深入学习这个强大的并发编程语言。在实际项目中,Erlang常用于构建大规模、高并发的系统,如网络服务器、分布式系统等。
内容概要:本文档详细介绍了Erlang编程语言及其并行编程模型,并重点阐述了Erlang OTP框架的特性和应用场景。首先,文档简述了Erlang语言的特点,包括轻量级进程、模式匹配和热代码升级等特性,以及它在构建高可用、...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、分布式和实时系统。在本教程中,我们将深入探讨如何使用Erlang构建一个名为"Application"的基本应用程序,这在...
这个压缩包包含了Erlang程序设计的完整目录和源码,是学习和理解Erlang编程的重要资源。 Erlang的并发特性源于其轻量级进程模型,每个进程都有自己的内存空间,进程间通信通过消息传递实现,这种设计降低了并发执行...
在IT行业中,Erlang是一种面向并发的编程语言,它被广泛用于构建高可靠性、分布式系统,尤其是在电信和实时计算领域。WebSocket协议则是一种在Web上实现双向通信的协议,它允许服务器和客户端进行持久连接,从而实现...
Erlang是一种面向并发的、函数式编程语言,特别适合于构建高可用性和容错性的分布式系统。...这个练习帮助初学者理解Erlang OTP的设计原则和实际应用,是深入学习Erlang并发编程和系统架构的重要步骤。
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、容错性和分布式系统。它的设计灵感来源于过程通信理论,支持轻量级进程(processes)和消息传递,使得在Erlang...
在Erlang编程语言中,进程是其核心特性之一,它们是并发执行的实体,类似于其他语言中的线程。在Erlang中,进程间通信(IPC)是通过消息传递来实现的,而`link`机制是这个通信模型中非常重要的一部分。本教程将通过...
本书由Erlang之父Joe Armstrong编写,是毋庸置疑的经典著作。书中兼顾了顺序编程、并发编程和...第2版全新改写,反应了自第1版面世以来Erlang历经的所有变化,添加了大量针对初学者的内容,并在每章后都附上了练习题。
- **实践项目**: 结合实际案例进行练习,比如实现一个简单的 Web 服务器或聊天应用,通过实践加深对 Erlang 特性的理解。 - **社区交流**: 加入 Erlang 社区,与其他开发者交流经验和技术问题,参与开源项目也是提高...
学会创建、通信和管理进程是Erlang编程的关键。 3. **OTP(Open Telecom Platform)框架**:OTP是Erlang的标准库,提供了一套用于构建可靠、容错系统的模块和设计模式。其中,Mnesia数据库、GenServer行为、...
这个“erlang资源”压缩包显然包含了一系列学习Erlang编程语言的材料,这可能是教程文档、代码示例、讲义或者练习题。以下是一些关于Erlang的关键知识点,以及可能在这些资源中找到的相关内容: 1. **函数式编程**...
递归是Erlang编程中不可或缺的一部分,因为Erlang的列表操作通常是基于递归的。Erlang内置了调试和跟踪工具,让开发者可以轻松地发现和修复并发程序中的错误。 在学习Erlang的过程中,将不可避免地需要掌握网络编程...
建议学习实践: ...1. 要坚持实践高性能大并发编程的实践 2. Erlang基础->OTP高并发编程实践PDF->Elixir 3. 认真实践本书中的知识点, 动手练习, 高并发软件实时大容量的服务器开发可打败C++的大团队开发
标题中的“katas”指的是编程练习或挑战,通常用于提高编程技能和理解各种编程语言的特性。这个资源涉及了Elixir、Haskell和Erlang这三种编程语言,它们都是函数式编程语言,但各有其独特之处。 1. **Elixir**: ...
Erlang是一种专为并发、分布式系统设计的编程语言,由瑞典电信设备制造商爱立信于1986年开发,最初是作为内部项目的一部分,用于支持大规模并发通信。Erlang语言特别适合于编写需要极高并发处理能力的软件,如电信...