用Go语言写了一个电脑搜索文件的小东西
package main import (
"bytes"
"fmt"
"os"
"os/exec"
"path/filepath"
"sync"
) type jieguo struct {
go_num int
Lock sync.Mutex
} var searchName string = os.Args[1]
var search_result chan string = make(chan string, 1)
var nums chan int = make(chan int, 1)
var x jieguo = jieguo{go_num: 0} func main() {
list := []string{"D:","E:","F"}
for _, i := range list {
fmt.Println(i, searchName)
go pan(i)
}
for {
select {
case x := <-search_result:
fmt.Println(x)
case y := <-nums:
if y == 0 {
os.Exit(0)
}
}
}
} func pan(path string) {
a := exec.Command("ls", path)
result, e := a.Output()
if e != nil {
fmt.Println(e)
}
z := bytes.Split(result, []byte{10})
for _, i := range z[:len(z)-1] {
s := path + "\\" + string(i)
fmt.Println(s)
e = os.Chdir(s)
if e == nil {
x.Lock.Lock()
x.go_num = x.go_num + 1
x.Lock.Unlock()
go func() {
filepath.Walk(s, walk)
x.Lock.Lock()
x.go_num = x.go_num - 1
nums <- x.go_num
x.Lock.Unlock()
}()
} else {
fmt.Println(e)
if string(i) == searchName {
fmt.Println(s)
}
}
}
} func walk(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
if !info.IsDir() && info.Name() == searchName {
search_result <- path
return nil
}
return nil
}
用Go语言写了一个电脑搜索文件的小东西的更多相关文章
- 不好意思啊,我上周到今天不到10天时间,用纯C语言写了一个小站!想拍砖的就赶紧拿出来拍啊
花10天时间用C语言做了个小站 http://tieba.yunxunmi.com/index.html 简称: 云贴吧 不好意思啊,我上周到今天不到10天时间,用纯C语言写了一个小站!想拍砖的就赶紧 ...
- 用Racket语言写了一个万花筒的程序
用Racket语言写了一个万花筒的程序 来源:https://blog.csdn.net/chinazhangyong/article/details/79362394 https://github. ...
- 用c#写的一个局域网聊天客户端 类似小飞鸽
用c#写的一个局域网聊天客户端 类似小飞鸽 摘自: http://www.cnblogs.com/yyl8781697/archive/2012/12/07/csharp-socket-udp.htm ...
- Python 写了一个批量生成文件夹和批量重命名的工具
Python 写了一个批量生成文件夹和批量重命名的工具 目录 Python 写了一个批量生成文件夹和批量重命名的工具 演示 功能 1. 可以读取excel内容,使用excel单元格内容进行新建文件夹, ...
- 自己写的一个Solr搜索实例,增删改查+高亮+分页
今天个人coding的模块测试,所以闲暇之余继续研究solr,然后顺带写了一个实例,随便搞的,solr真心不熟,期待认识热爱搜索的朋友,共同进步. 1.配置schema.xml文件[solr\coll ...
- 写了一个常规性生成merge 的小脚本
现在使用数据库来写存储过程,动不动参数就会用到xml ,当然罗,优势也很明显,参数相对固定,而且灵活,如果要修改或者什么的,中间接口层也不需要做变化,只需要修改封装的存储过程以及程序传参就ok了. 随 ...
- C语言写了一个socket client端,适合windows和linux,用GCC编译运行通过
////////////////////////////////////////////////////////////////////////////////* gcc -Wall -o c1 c1 ...
- C语言写了一个socket server端,适合windows和linux,用GCC编译运行通过
////////////////////////////////////////////////////////////////////////////////* gcc -Wall -o s1 s1 ...
- 自己写的一个nodejs查找文件模块-node-find-all-files
最近在折腾着用node-webkit搭建一个工具,其中要查找路径下的所有文件然后再进行压缩等操作,于是进写了这样的一个模块.代码如下: /* 输入目录找出目录下的所有文件,包括文件夹 */ /* 依赖 ...
随机推荐
- Expressjs配置加载器
有些东西就是操刀开干,没什么好解释的.... 问题引入 解决问题 直接上码 env.js index.js 使用方法 初始化 使用方法 写在最后 问题引入 大家都知道在日常的研发过程中,我们的程序会有 ...
- angular-表格
ng-repeat 指令可以完美的显示表格. <div ng-app="myApp" ng-controller="customersCtrl"> ...
- Android自己定义TabActivity(实现仿新浪微博底部菜单更新UI)
现在Android上非常多应用都採用底部菜单控制更新的UI这样的框架,比如新浪微博 点击底部菜单的选项能够更新界面.底部菜单能够使用TabHost来实现,只是用过TabHost的人都知道自己定义Tab ...
- C中操作文件的几种模式
使用文件的方式共同拥有12种,以下给出了它们的符号和意义. 文件打开方式 意义 rt 仅仅读打开一个文本文件.仅仅同意读数据 wt 仅仅写打开或建立一个文本文件,仅仅同意写数据 at 追 ...
- m_Orchestrate learning system---十、解决bug最根本的操作是什么
m_Orchestrate learning system---十.解决bug最根本的操作是什么 一.总结 一句话总结:多学多练,遇到bug超级轻松 1.如何查看js代码的异常? 开发者选项里面可以查 ...
- spring中bean标签factory-method和factory-bean)详解工厂方法(factory-method和factory-bean)
转自:http://blog.sina.com.cn/s/blog_6d3c1ec601019f3j.html A.factory-method The name of a factory metho ...
- windows共享如何重新登录,或用另外的用户登录
使用net use * /del 可以结束已有的所有连接,或net use \\192.168.1.10 /del可以结束指定连接.比如想重新登录共享的话,就用这个命令结束原来的连接,就可以重新登录 ...
- 3ds Max实例教程-制作卡通蓝色小人
此篇教程分享使用3ds Max制作卡通蓝色小人,是根据作者梦境出现的画面为原型,加以改造,得到的最终效果图. 创作一张图最重要的地方是先用纸和笔画出草稿图.你需要表明所有的细节,研究角色的特点——我发 ...
- 模拟post提交
模拟post提交 function post(URL, PARAMS) { var temp = document.createElement("form"); temp.acti ...
- Python2.* object类............
class object: """ The most base type """ def __delattr__(self, name): ...