首页 > 其他分享 >go 读取目录与cp

go 读取目录与cp

时间:2023-05-12 13:24:42浏览次数:34  
标签:files main 读取 err fmt func go cp os

 

利用ioutil的ReadDir方法:

package main

import (
"fmt"
"io/ioutil"
)

func main() {
files, _ := ioutil.ReadDir("./")
for _, f := range files {
fmt.Println(f.Name())
}
}

 

利用filepath的Glob方法:

package main

import (
"fmt"
"path/filepath"
)

func main() {
files, _ := filepath.Glob("*")
fmt.Println(files) // contains a list of all files in the current directory
}

 

利用walk:

package main

import (
"fmt"
"os"
"path/filepath"
)

func main() {
var files []string

root := "/some/folder/to/scan"
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
files = append(files, path)
return nil
})
if err != nil {
panic(err)
}
for _, file := range files {
fmt.Println(file)
}
}

 

walkfunc:

package main

import (
"fmt"
"log"
"os"
"path/filepath"
)

func visit(files *[]string) filepath.WalkFunc {
return func(path string, info os.FileInfo, err error) error {
if err != nil {
log.Fatal(err)
}
*files = append(*files, path)
return nil
}
}

func main() {
var files []string

root := "/some/folder/to/scan"
err := filepath.Walk(root, visit(&files))
if err != nil {
panic(err)
}
for _, file := range files {
fmt.Println(file)
}
}

 

 

 

cp 文件:

package main

import (
"bufio"
"flag"
"fmt"
"io"
"os"
"strings"
)

var (
showProcess bool
forceCp bool
)

func init() {
flag.BoolVar(&showProcess, "v", false, "show copy msg")
flag.BoolVar(&forceCp, "f", false, "false to cp")
flag.Parse()
}

func main() {
if flag.NArg() < 2 {
flag.Usage()
fmt.Println("error: Need dst and src file!!")
return
}

CopyFile(flag.Arg(0), flag.Arg(1))

}

func fileExist(filename string) bool {
_, err := os.Stat(filename)
return err == nil || os.IsExist(err)
}
func copyActioin(dst, src string) (w int64, err error) {
var (
srcFile *os.File
dstFile *os.File
)
srcFile, err = os.Open(src)
if err != nil {
fmt.Println(err.Error())
return
}
defer srcFile.Close()

dstFile, err = os.Create(dst)
if err != nil {
fmt.Println(err.Error())
return
}
defer dstFile.Close()

return io.Copy(dstFile, srcFile)

}
func CopyFile(dst, src string) {
if !forceCp {
if fileExist(dst) {
fmt.Printf("%s existed overwrite?[y/n]", dst)
reader := bufio.NewReader(os.Stdin)
data, _, _ := reader.ReadLine()
if strings.ToLower(strings.TrimSpace(string(data)))[0] != 'y' {
return
}
}
}
copyActioin(dst, src)
if showProcess {
fmt.Printf("%s =====>> %s", src, dst)
}
}

 

 

参考:

https://blog.csdn.net/xielingyun/article/details/56484004

https://loocode.com/post/shi-yong-go-lie-chu-wen-jian-jia-zhong-de-wen-jian

https://blog.csdn.net/weixin_30746129/article/details/83276117

标签:files,main,读取,err,fmt,func,go,cp,os
From: https://www.cnblogs.com/rebrobot/p/17393796.html

相关文章

  • golang web页面动态加载实现
            Go的web页面动态加载实现。  1.在MySQL中添加表项users,构造多条数据。CREATETABLEIFNOTEXISTSusers(idINTUNSIGNEDAUTO_INCREMENT,usernameVARCHAR(255)NOTNULL,passwordVA......
  • cookie和session、Django中间件
    cookie和session、Django中间件cookie和session简介http的五大特性:1.基于请求响应2.基于tcp和ip作用于应用层之上的协议3.无状态 服务端无法识别客户端的状态(互联网刚开始兴起的的时候所有人访问网址都是一样的数据,服务端记不住客户端的状态,服务端不得不想办法记住客......
  • python Django项目以Debug模式启动和外网访问启动
    一、Django介绍介绍:完善的web框架,包括前端和后端的管理,django项目管理;管理后台访问:后面补充前端页面访问:根据app/settings.py文件下配置的访问地址1.1项目结构1.1.1app项目配置文件存放settings.py、urls.py、wsgi.py等1.1.2子应用配置Migrations:数据库模型的脚本,......
  • go http portal 笔记
    目前使用go的gin框架写了一个httpportal服务器,1、目前为了调试方便,http服务器回报时会设置cookie比如设置cookie:hostid=1;MD5=wewq8wqe等作为traceid方便后续跟踪log2、在设置cookie的时候遇到了,一些问题,比如设置cookie时,希望下次请求带上cookie,则需要设置cookie的Path......
  • Google I/O 2023
    视频   产品框架  思维导图......
  • django通过celery定时任务
    settings.py #Broker配置,使用Redis作为消息中间件BROKER_URL='redis://127.0.0.1:6379/0'#BACKEND配置,这里使用redisCELERY_RESULT_BACKEND='redis://127.0.0.1:6379/0'#结果序列化方案CELERY_RESULT_SERIALIZER='json'#任务结果过期时间,秒CELERY_TASK......
  • Google I/O 2023发布大语言模型PaLM2
    ·PaLM2模型提供了不同规模的四个版本,其中轻量级的Gecko模型可以在移动设备上运行,速度非常快,不联网也能在设备上运行。谷歌还推出了两个专业领域大模型,其中,Med-PaLM2能回答各种医学问题,是首个在美国医疗执照考试中达到专家水平的大语言模型。 谷歌首席执行官桑达尔·皮查伊......
  • django通过channels实现websocket
     WebSocket协议是基于TCP的一种新的协议。WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符。它实现了浏览器与服务器全双工(full-duplex)通信。其本质是保持TCP连接,在浏览器和服务端通过Socket进行通信。当客户端向服务端发送连接请求时,不仅连接还会......
  • Go源码阅读——github.com/medcl/esm —— v0.go
    esm(AnElasticsearchMigrationTool)——v0.gohttps://github.com/medcl/esmrelease:8.7.1通过阅读好的源代码,细致思考,理性分析并借鉴优秀实践经验,提高zuoyang的编程水平,所谓"他山之石,可以攻玉" 该是如此吧。 /*Copyright2016Medcl(mATmedcl.net)Licensedun......
  • H3C DHCP配置使用
    1.查看DHCPIP地址池IP使用情况<Core_1#_3F_01_CCTV>disdhcpserverip-in-useIPaddressClient-identifier/LeaseexpirationTypeHardwareaddress192.168.13.701e0-508b-b3bc-9bMay1308:58:592023Auto(C)......