Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Golang语言情怀--第107期 go语言实现遍历目录,及查找特定的文件类型

Golang语言情怀--第107期 go语言实现遍历目录,及查找特定的文件类型

作者头像
李海彬
发布于 2023-10-30 08:06:39
发布于 2023-10-30 08:06:39
41900
代码可运行
举报
文章被收录于专栏:Golang语言社区Golang语言社区
运行总次数:0
代码可运行

最近项目有一个需求,产品配置好excel后,需要写入数据库及图片资源上传到OSS,

读取excel的数据

写入数据库

通过读取到的数据,如果涉及到图片等资源,需要上传到OSS

我们先看下一个代码实例,读取文件的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 package main

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

 var (
     ostype = os.Getenv("GOOS") // 获取系统类型
 )

 var listfile []string //获取文件列表

 func Listfunc(path string, f os.FileInfo, err error) error {
     var strRet string
     strRet, _ = os.Getwd()
     //ostype := os.Getenv("GOOS") // windows, linux

     if ostype == "windows" {
         strRet += "\\"
     } else if ostype == "linux" {
         strRet += "/"
    }

     if f == nil {
         return err
     }
     if f.IsDir() {
         return nil
     }

     strRet += path //+ "\r\n"
     //用strings.HasSuffix(src, suffix)//判断src中是否包含 suffix结尾
     ok := strings.HasSuffix(strRet, ".go")
     if ok {

         listfile = append(listfile, strRet) //将目录push到listfile []string中
     }
     fmt.Println(strRet) //list the file

     return nil
 }

 func getFileList(path string) string {
     err := filepath.Walk(path, Listfunc) //

     if err != nil {
         fmt.Printf("filepath.Walk() returned %v\n", err)
     }

     return " "
 }

 func ListFileFunc(p []string) {
     for index, value := range p {
         fmt.Println("Index = ", index, "Value = ", value)
     }
 }

 func main() {
     var listpath string
     fmt.Scanf("%s", &listpath)
     getFileList(listpath)
     ListFileFunc(listfile)

 }

上面例子是来自网上,主要是读取特定.go文件。

项目中的结构如下:

config:配置文件,excel文件

db数据库的操作

excel关于excel的读写

file关于资源文件读取

img存放图片资源

oss关于oss上传操作

rescource关于读取配置文件的逻辑

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言情怀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Golang语言社区--列出目录和遍历目录的方法
package main import ( "fmt" "io/ioutil" "os" "path/filepath" "strings" ) //获取指定目录下的所有文件,不进入下一级目录搜索,可以匹配后缀过滤。 func ListDir(dirPth string, suffix string) (files []string, err error) { files = make([]string, 0, 10) dir, err := ioutil.ReadDir(dirPth) i
李海彬
2018/03/21
3.3K0
go语言实现通过FTP库自动上传web日志
因为平时管理的web服务器都是VM服务器,为节省硬盘空间,一般给虚拟机分配的硬盘空间都比较小,只有8G,因为,保存不了多少日志,所以每天都需要把每台WEB日志转移到一个硬盘比较大的服务器上,然后再使用NBU集中备份,本程序主要使用go语言实现实现将web日志通过FTP自动上传FTP服务器,使用了filepath.Walk遍历日志目录及第三方纯go库“github.com/jlaffaye/ftp”,而日志VM本地存储路径格式是 /var/log/weblog/www.domainName.com/month
李海彬
2018/03/20
2.2K0
golang把文件复制到另一个目录
//本程序 主要功能是把A文件夹下的文件与B目录下文件对比,如果找到就覆盖到B相应的目录下。 // 用法: merge A目录 B目录 // merge.go package main import ( "flag" "fmt" "os" "path/filepath" "strings" "time" "github.com/Unknwon/com" ) const ( IsDirectory =
李海彬
2018/03/27
1.3K0
go语言学习-文件操作 path path/filepath
在 Linux 中,路径的格式为/user/bin 路径中的分隔符是/; Windos 中的路径格式 为C:\Windows路径中的分隔符是\。 而**在Go中,只认'/' **。
solate
2019/07/22
2.1K0
使用DaemonSet实现heapdump文件自动化管理
heapdump文件是Java应用遭遇OOM后的诊断报告,记录了某一时刻 JVM 堆中对象的详细使用情况,是 JVM 堆内存的一个快照。通过分析 heapdump 文件,我们可以深入了解到内存中究竟存在哪些对象,它们占用了多少内存空间,以及对象之间的引用关系如何。这对于定位内存泄漏问题至关重要。
没有故事的陈师傅
2025/02/07
1610
使用DaemonSet实现heapdump文件自动化管理
Go语言并发模型:以并行处理MD5为例
简介 Go语言的并发原语允许开发者以类似于 Unix Pipe 的方式构建数据流水线 (data pipelines),数据流水线能够高效地利用 I/O和多核 CPU 的优势。 本文要讲的就是一些使用流水线的一些例子,流水线的错误处理也是本文的重点。 阅读建议 本文是"Go语言并发模型:像Unix Pipe那样使用channel" 一文的下半部分,但重点在于实践。如果你对 channel 已经比较熟悉,则可以独立阅读。 如果你对 channel 和 go 两个关键字不太熟悉,建议先阅读上半部分。 本文所使用
李海彬
2018/03/26
2.1K0
go 文件夹下所有文件查找指定字符串
文件遍历 package main import ( "bufio" "fmt" "os" "path/filepath" "strings" ) func main() { root := "." filepath.Walk(root, walkfunc) } func walkfunc(path string, info os.FileInfo, err error) error { //过滤目录 if info.IsDir() { return nil } //
solate
2020/06/22
3K0
Golang网页下载示例
package main /* 中文编码问题 */ import ( "errors" "flag" "fmt" query "github.com/PuerkitoBio/goquery" "golang.org/x/text/encoding/simplifiedchinese" "io/ioutil" "net/http" "os" "path/filepath" "runtime" "strings"
大师级码师
2021/11/01
7740
2021-05-02:给定一个文件目录的路径,写一个函数
2021-05-02:给定一个文件目录的路径,写一个函数统计这个目录下所有的文件数量并返回。隐藏文件也算,但是文件夹不算 。
福大大架构师每日一题
2021/05/04
4420
2021-05-02:给定一个文件目录的路径,写一个函数
聊聊golang的lumberjack
Logger定义了Filename、MaxSize(单个文件大小最大值,单位M)、MaxAge(单位天)、MaxBackups、LocalTime、Compress属性;Write方法先判断要写入的长度是否超过l.max(),之后判断file是否为nil,如果为nil则执行l.openExistingOrNew;之后判断l.size+writeLen是否大于l.max(),如果大于则执行l.rotate(),否则执行l.file.Write(p),然后更新l.size。
code4it
2020/12/25
3210
聊聊golang的lumberjack
golang 文件操作
func ReadFile(){ filePath := './data.json'; fileContent := '';
copy_left
2019/08/23
5100
Go每日一库之3:go-homedir
今天我们来看一个很小,很实用的库go-homedir。顾名思义,go-homedir用来获取用户的主目录。
luckpunk
2023/09/12
3040
go语言path/filepath包之Walk源码解析
go语言的path/filepath包包提供了很多兼容各个操作系统的文件路径实用操作方法,今天只来看看Walk方法:
我的小碗汤
2018/08/22
1.5K0
go语言path/filepath包之Walk源码解析
EasyNTS增加定时删除/tmp文件夹多余文件的功能
EasyNTS 的主要作用就是解决异地视频共享/组网的需求,网页对域名进行添加映射时,添加成功后会生成一个外网访问地址,在浏览器中输入外网访问地址,即可查看内网应用。在一个 EasyNTS 现场,用户反馈 EasyNTS 在 tmp 文件夹存在大量的日志,导致机器卡死的问题。以下为存在的日志:
TSINGSEE青犀视频
2021/12/21
1.4K0
go语言基础语法入门
首先字节跳动已经全面拥抱了 go 语言,公司内部有上万个微服务使用 golang 来编写,不久前也开源了 GORPC 框架 KiteX。腾讯、百度、美团、滴滴、深信服、平安、OPPO、知乎、去哪儿、360、金山、微博、bilibili、七牛、PingCAP 等公司也在大量使用 Go 语言。 国外 Google Facebook 等公司也在大量使用 Go 语言。 从业务维度看过语言已经在云计算、微服务、大数据、区块链、物联网等领域蓬勃发展。然后在云计算、微服务等领域已经有非常高的市场占有率 Docker、Kubernetes、Istio、etcd、prometheus 几乎所有的云原生组件全是用 Go 实现的。
timerring
2023/10/13
2160
Golang 编写的图片压缩程序,质量、尺寸压缩,批量、单张压缩
本文介绍了如何利用Go语言进行图片压缩,从读取图片文件、获取图片信息、使用第三方库进行图片压缩、并输出压缩后图片的格式和大小,最后给出代码示例和测试用例。
林冠宏-指尖下的幽灵
2018/01/03
6.4K0
Golang 编写的图片压缩程序,质量、尺寸压缩,批量、单张压缩
用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 =
大师级码师
2021/11/01
3560
通过Go写一个简易版的上传文件到存储的工具
一、场景说明在设计CICD流程中,需要将安卓的APK包上传到文件存储中去,然后将对应的下载链接发给产研、运营人员进行内部使用测试;之前我是通过Groovy实现将构建好的成品上传到私服中去的,后面业务全部迁移上云之后,就想着在将APK包直接上传到OSS存储中去,然后将生成的下载链接通过企业微信或者钉钉自动推送给相应的人员。项目地址:https://github.com/dqzboy二、实现方式创建子账号,获取子账号AccessKey创建Bucket,并授权OSS读写权限通过Go调用OSS-SDK进行实现文件的
浅时光博客
2022/09/12
1.1K0
通过Go写一个简易版的上传文件到存储的工具
go语言制作的zip压缩程序
package main import ( "archive/zip" "bytes" "fmt" "io/ioutil" "os" "path/filepath" ) func main() { if err := compress(`gopkg`, `gopkg.zip`); err != nil { fmt.Println(err) } } // 参数frm可以是文件或目录,不会给dst添加.zip扩展名 func compress(frm, dst string) error {
李海彬
2018/03/26
9210
使用ChatGPT实现Go版本的视频文件无人直播
崔哥
2023/11/07
2110
相关推荐
Golang语言社区--列出目录和遍历目录的方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验