关于Go的一个文件目录共享应用实例
来源:互联网 发布:mac键盘怎么拆 编辑:程序博客网 时间:2024/06/06 12:32
package mainimport ("flag""fmt""io/ioutil""net/http""path/filepath""sort""sync""text/template""time")const L = `<html><title>文件列表</title><body>{{$ip := .IP}}{{$dir := .Dir}}<table>{{range $k,$v := .List}}<tr><td><a href="http://{{$ip}}/{{$dir}}/{{$v.Name}}">文件名:{{$v.Name}}</a></td><td> 修改时间:{{$v.Time}}</td></tr>{{end}}</table></body></html>`type info struct {Name stringTime time.Time}type newlist []*infotype Dirinfo struct {lock sync.MutexIP stringDir stringList newlist}var x Dirinfovar name, dir stringvar path *string = flag.String("p", "/tmp", "共享的路径")var port *string = flag.String("l", ":1789", "监听的IP:端口")func main() {flag.Parse()name = filepath.Base(*path)dir = filepath.Dir(*path)fmt.Println("共享的目录:", *path)http.Handle(fmt.Sprintf("/%s/", name), http.FileServer(http.Dir(dir)))http.HandleFunc("/", router)http.ListenAndServe(*port, nil)}func router(w http.ResponseWriter, r *http.Request) {l, _ := getFilelist(*path)x.lock.Lock()x.Dir = namex.List = lx.IP = r.Hostx.lock.Unlock()t := template.New("")t.Parse(L)t.Execute(w, x)}func getFilelist(path string) (newlist, error) {l, err := ioutil.ReadDir(path)if err != nil {return []*info{}, err}var list []*infofor _, v := range l {list = append(list, &info{v.Name(), v.ModTime()})}sort.Sort(newlist(list))return list, nil}func (I newlist) Len() int {return len(I)}func (I newlist) Less(i, j int) bool {return I[i].Time.Unix() < I[j].Time.Unix()}func (I newlist) Swap(i, j int) {I[i], I[j] = I[j], I[i]}
1 0
- 关于Go的一个文件目录共享应用实例
- 关于Go语言共享内存操作的小实例
- 关于Graphics的一个应用实例
- Go 获取指定目录下的文件
- dtree在Struts应用实例--文件目录的便历和生成目录树
- java工具类-给定一个file实例将该目录下的文件以及目录输出
- 如何读取IOS共享目录的文件
- [代码实例]一个共享内存的class
- Unix学习笔记-------目录遍历实例----Linux下判断是否是一个目录还是一个文件的方法
- 共享文件目录
- go 服务器静态文件目录
- Go语言结构应用实例
- C#访问共享目录 得到共享目录文件列表和修改里面的文件
- 重命名一个目录的文件
- DataGrid应用的一个实例
- XMLHTTP应用的一个实例
- Sphinx的一个应用实例
- 马尔科夫链的一个应用实例
- ConcurrentHashMap原理分析
- 答读者问(30):一个大一学生有关未来技术方向的疑问及答复
- BFS、双向BFS和A*
- postgreSQL中function返回结果集
- 重载赋值运算符(c/c++)
- 关于Go的一个文件目录共享应用实例
- Android、IOS直接打开QQ或微信对应好友的聊天窗口
- 驱动去哪啦
- 老规矩HelloWorld
- Leetcode-N-Queens
- thinkphp3.2.3中设置路由,优化url
- 单点登录(一)使用Cookie+File实现单点登录
- 锈永不磨灭,让末日来得更酷!
- java实现kafka单机版测试