go高频文件操作整理

如有帮助,欢迎留下足迹哦!

目录

创建文件

带权限创建或打开

创建目录(单级、多级)

检查给定路径(目录、文件)是否存在

将目录和文件名拼接成为完整文件路径

给定文件路径获取文件后缀

给定文件路径获取文件名及其上级目录

判断给定路径是文件还是目录

统计目录下的文件数量

获取给定目录下的所有文件(包括子文件夹下的所有子文件)

给文件加权限(chmod)

获取文件的权限、判断文件是否具有可执行权限


创建文件

file, err := os.Create(fileName)

带权限创建或打开

mode := os.FileMode(0644) | os.ModePerm// 注意:OpenFile默认以只读方式来打开文件,此时无需调用os.Create来创建。
// O_RDONLY为只读;O_CREATE为创建;O_WRONLY为只写;O_TRUNC为;打开并清空文件  模式可自选。
file, err := os.OpenFile(filePath, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, mode)

创建目录(单级、多级)

func CreateDir(dir string) (bool, error) {// 单级// os.Mkdir()// 多级if err := os.MkdirAll(dir, 0755); err != nil {return false, err}return true, nil
}

检查给定路径(目录、文件)是否存在

// 结果为true表示存在
func Exists(path string) bool {_, err := os.Stat(path)return err == nil
}

将目录和文件名拼接成为完整文件路径

filePath := filepath.Join("dir", "filename")

filePath := path.Join("dir", "filename")

区别是,前者自动基于操作系统来进行路径拼接,后者主要拼接通用的、与操作系统无关的路径格式。

注: linux下为/   windows下为反斜杠\  

给定文件路径获取文件后缀

ext = filepath.Ext(respPayload.FilePath)

给定文件路径获取文件名及其上级目录

fileDir, fileName = filepath.Split(file)

判断给定路径是文件还是目录

// isDir=false表示是文件
func IsDir(path string) (isDir bool, err error) {f, err := os.Stat(path)if err != nil {return}if f.IsDir() {isDir = true}return
}

统计目录下的文件数量

func GetFileNumbers(folder string) (numbers int) {files, _ := ioutil.ReadDir(folder)for _, file := range files {if !file.IsDir() {numbers++}}return
}

获取给定目录下的所有文件(包括子文件夹下的所有子文件)

func GetFiles(folder string) (filesList []string) {files, _ := ioutil.ReadDir(folder)for _, file := range files {if file.IsDir() {GetFiles(folder + "/" + file.Name())} else {filesList = append(filesList, file.Name())}}return
}

给文件加权限(chmod)

// 如增加可执行权限
err := os.Chmod(fileName, os.FileMode(73))

获取文件的权限、判断文件是否具有可执行权限

func getAccess() {info, err := os.Stat("./a")if err != nil {return}mode := info.Mode() // 当前文件的权限// |493|111101101|-rwxr-xr-x|----------|false|true|fmt.Printf("|%d|%b|%v|%v|%v|%v|\n", mode, mode, mode.Perm(), mode.Type(), mode.IsDir(), mode.IsRegular())// -rwxr-xr-xfmt.Println(mode.String())// 是否有有可执行权限,相当于和–x–x–x进行按位与操作// 如果结果等于0111,说明文件对于所有者、组和其他用户都有执行权限。if mode.Perm()&0111 == 0111 { // 或 mode.Perm()&73 == os.FileMode(73)// 有可执行权限fmt.Println("can executable")} else {fmt.Println("no executable")}
}


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

肯尼斯·里科《C和指针》第6章 指针(7)编程的练习:删除字符

肯尼斯里科《C和指针》第6章 指针(6)编程的练习:查找字符-CSDN博客 2.编写一个函数,删除一个字符串的一部分。函数的原型如下: int del_substr(char *str, char const *substr) 函数首先应该判断substr是否出现在str中…

良心推荐!几款收藏的神级IDEA插件分享

本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 文章目录 CodeGlanceGsonFormatPOJO to JsonRainbow BracketsTranslationLombokMaven HelperAlibaba Java Code GuidelinesGenerateAllSetterMybatisXChinese (Simplified…

GEE APP——基于PFI纯净森林指数的CCDC-SMA算法的长时序森林监测APP

简介 森林生态系统的碳排放受到破碎化加速和边缘效应的极大影响。要了解这些影响,就必须准确监测破碎化森林景观的变化。然而,这些变化通常强度低、尺度小,因此很难使用中等空间分辨率的卫星图像(如 Landsat)来检测。为了应对这一挑战,本研究开发了纯林指数(PFI),该指…

react js自定义实现状态管理

redux基础实现 myRedux export const createStore (reduce) > {if (typeof reduce ! function) throw new Error(Expected the reducer to be a function.)let state,listeners []state reduce()const getState () > stateconst dispatch (action) > {if(typeo…

Tomcat10.X部署老版本axis2 webservice项目不生效

目录 一、使用场景 二、问题描述 三、原因排查 四、解决方案 一、使用场景 原来项目是OpenJDK8tomcat9构建,现在需要升级到OpenJDK17tomcat10的组合。原来的webservice项目打包成aar格式,通过axis2部署在tomcat上。 二、问题描述 在配置好jdk和to…

c ffmpeg 学习

1. int8_t <> char u_int8_t unsigned char int16_t short int32_t int 2. #define X(x) x,x,x,x,x,x,x,x //表示8个x 主要用于数组赋值 #include <stdio.h> #include <stdlib.h> #include <string.h>#define X8(x)…

【软件测试学习笔记1】测试基础

1.软件测试的定义 软件的定义&#xff1a;控制计算机硬件工作的工具 软件的基本组成&#xff1a;页面客户端&#xff0c;代码服务器&#xff0c;数据服务器 软件产生的过程&#xff1a;需求产生&#xff08;产品经理&#xff09;&#xff0c;需求文档&#xff0c;设计效果图…

redis前缀匹配数据迁移数据

背景&#xff1a; 阿里云的dts不支持前缀匹配迁移。 调研发现RedisShake可以前缀匹配迁移。 https://github.com/tair-opensource/RedisShake proxy 代理模式 阿里云的redis cluster 默认是proxy 代理模式&#xff0c; 不支持增量迁移。 如果要支持增量迁移需要开启 redis clu…

Java支持哪些基本的数据类型?

Java支持哪些基本的数据类型&#xff1f; Java语言支持以下八种基本数据类型&#xff08;primitive types&#xff09;&#xff1a; byte: 8位&#xff0c;有符号的整数&#xff0c;范围从-128到127。short: 16位&#xff0c;有符号的整数&#xff0c;范围从-32768到32767。i…

NEAU_Python程序设计结课作业

1.身份证号合法性判别 【问题描述】我国身份证号码由数字与字母混合组成。早期身份证由15位数字构成。后来考虑到千年虫问题(&#xff08;15位的身份证号码只能为150c年1月1日到9年12月31日出生的人确号)&#xff0c;所以又增加了18位身份证号码编号规则。最后—位(第18位)校验…

用二维码介绍产品详情,扫码查看图文并茂的宣传册

传统的产品宣传方式&#xff0c;往往以产品手册、宣传单等纸质物料为主&#xff0c;更新成本高昂&#xff0c;一旦修改内容&#xff0c;就必须重新印刷&#xff0c;而且不易携带和保存&#xff0c;影响宣传效果和客户体验。 为了避免上述问题&#xff0c;可以在草料上搭建产品…

C语言中的 `string.h` 头文件包含的函数

C语言中的 string.h 头文件包含了许多与字符串或数字相关的函数。这些函数可以用于字符串的复制、连接、搜索、比较等操作。 常用字符串函数 函数名功能strlen()返回字符串的长度strcpy()将一个字符串复制到另一个字符串中strncpy()将最多 n 个字符从一个字符串复制到另一个字…

TongLINKQ(3):TongLINKQ常用命令

启动&#xff1a; tlq 暂停&#xff1a; tlq -cabort -y -w1 查看lic信息&#xff1a; tlqstat –lic 查看队列消息&#xff1a; tlqstat -qcu qcu名 -c 查看发送连接状态&#xff1a; tlqstat -snd qcu名 -1 -ct 1 查看指定的Qcu连接状态&#xff1a; tlqsta…

【树莓派】网线远程连接电脑和树莓派,实现SSH连接

目录 1、硬件连接&#xff1b; 2、电脑端&#xff1a; 3、查找树莓派的IP地址 4、开启树莓派的SSH接口 5、putty 6、命令行 参考文章 通过网线连接笔记本与树莓派 开启SSH和VNC功能 无显示器安装树莓派 实现&#xff1a;打开putty输入树莓派地址使用ssh方式登陆&…

java小游戏——动漫美女拼图

1&#xff1a;继承 1.1 继承概述 首先&#xff0c;我们来说一下&#xff0c;什么是继承&#xff1a; 继承是面向对象三大特征之一(封装&#xff0c;继承和多态) 可以使得子类具有父类的属性和方法&#xff0c;还可以在子类中重新定义&#xff0c;追加属性和方法 也就是说&…

用Python做数据分析之数据表清洗

对数据表中的问题进行清洗。主要内容包括对空值&#xff0c;大小写问题&#xff0c;数据格式和重复值的处理。这里不包含对数据间的逻辑验证。 处理空值(删除或填充) 我们在创建数据表的时候在 price 字段中故意设置了几个 NA 值。对于空值的处理方式有很多种&#xff0c;可以…

【办公技巧】ppt修改全部字体怎么改?

制作完PPT之后&#xff0c;想要更换ppt中的字体&#xff0c;有没有什么快捷的方法呢&#xff1f;今天分享两个方法&#xff0c;一键修改ppt文件字体。 方法一&#xff1a; 找到功能栏中的编辑选项卡&#xff0c;点击替换 – 替换字体&#xff0c;在里面选择我们想要替换的字体…

抽水马桶出水慢解决记录

今天分享一些修马桶的小心得&#xff08;雾&#xff09; 家里的马桶出水很好&#xff0c;但是水却不怎么被冲下去&#xff08;出水很慢&#xff09;&#xff0c;这会导致内容物滞留&#xff0c;造成很不好的使用体验。 出于成本考虑&#xff0c;首先选择自己维修。 首先直接…

【DolphinScheduler】datax读取hive分区表时,空分区、分区无数据任务报错问题解决

问题背景&#xff1a; 最近在使用海豚调度DolphinScheduler的Datax组件时&#xff0c;遇到这么一个问题&#xff1a;之前给客户使用海豚做的离线数仓的分层搭建&#xff0c;一直都运行好好的&#xff0c;过了个元旦&#xff0c;这几天突然在数仓做任务时报错&#xff0c;具体报…

JUC之锁

乐观锁和悲观锁 悲观锁 当一个线程在操作资源的时候&#xff0c;会悲观的任务有其他的线程会来抢占该资源&#xff0c;因此会在操作资源前进行加锁&#xff0c;避免其他线程抢占。 Synchronized关键字和Lock实现类就是悲观锁。 显示的锁定资源后再对资源进行操作。 使用场景&…