【go从零单排】Directories、Temporary Files and Directories目录和临时目录、临时文件

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。
📗概念
在 Go 语言中,path/filepath 包提供了一组用于处理文件路径的函数,特别是与文件系统路径相关的操作。这个包是 Go 标准库的一部分,主要用于跨平台的路径操作,确保在不同操作系统上(如 Windows 和 Unix/Linux)都能正确处理文件路径。
💻代码
Directories
package mainimport (//fmt:用于格式化输入和输出。//io/fs:提供文件系统接口。//os:提供与操作系统交互的功能,如文件和目录操作。//path/filepath:用于处理文件路径。"fmt""io/fs""os""path/filepath"
)// check 函数用于检查函数调用的错误,如果有错误则触发(panic),并输出错误信息。
func check(e error) {if e != nil {panic(e)}
}func main() {//创建一个名为 subdir 的目录,权限为 0755(可读、可写、可执行)。err := os.Mkdir("subdir", 0755)check(err)//使用 defer 语句确保程序结束时删除 subdir 及其内容,避免在测试时留下临时文件。defer os.RemoveAll("subdir")//定义一个匿名函数 createEmptyFile,用于创建一个空文件,权限为 0644(可读、可写)。createEmptyFile := func(name string) {d := []byte("") //创建一个空的字节切片(slice),byte类型check(os.WriteFile(name, d, 0644))}//创建多个文件和嵌套目录。使用 os.MkdirAll 创建多级目录(如果不存在则创建)。createEmptyFile("subdir/file1")err = os.MkdirAll("subdir/parent/child", 0755)check(err)createEmptyFile("subdir/parent/file2")createEmptyFile("subdir/parent/file3")createEmptyFile("subdir/parent/child/file4")//使用 os.ReadDir 读取 subdir/parent 目录的内容c, err := os.ReadDir("subdir/parent")check(err)fmt.Println("Listing subdir/parent")//range遍历打印每个条目的名称和是否为目录。for _, entry := range c {fmt.Println(" ", entry.Name(), entry.IsDir())}//将当前工作目录更改为 subdir/parent/child。err = os.Chdir("subdir/parent/child")check(err)//读取当前目录(即 child 目录)的内容,并打印。c, err = os.ReadDir(".")check(err)fmt.Println("Listing subdir/parent/child")for _, entry := range c {fmt.Println(" ", entry.Name(), entry.IsDir())}//将当前工作目录更改为上上级目录(即返回到项目根目录)。err = os.Chdir("../../..")check(err)//使用 filepath.WalkDir 遍历 subdir 目录及其所有子目录,并调用 visit 函数处理每个条目。fmt.Println("Visiting subdir")err = filepath.WalkDir("subdir", visit)
}// visit 函数用于处理遍历到的每个条目,打印路径和是否为目录。如果遇到错误,则返回错误。
func visit(path string, d fs.DirEntry, err error) error {if err != nil {return err}fmt.Println(" ", path, d.IsDir())return nil
}
Temporary Files and Directories
package mainimport (//fmt:用于格式化输入和输出。//os:提供与操作系统交互的功能,如文件和目录操作。//path/filepath:用于处理文件路径。"fmt""os""path/filepath"
)// check 函数用于检查函数调用的错误。如果发生错误,程序会触发(panic),并输出错误信息。
func check(e error) {if e != nil {panic(e)}
}func main() {//os.CreateTemp 创建一个临时文件。//第一个参数为空字符串,表示文件将被创建在系统默认的临时目录中。//第二个参数 "sample" 是文件名的前缀。f, err := os.CreateTemp("", "sample")check(err)//如果成功,f 是一个文件对象,f.Name() 返回临时文件的完整路径。fmt.Println("Temp file name:", f.Name())//使用 defer 确保程序结束时删除临时目录及其内容。defer os.Remove(f.Name())//使用 f.Write 向临时文件写入字节数据 {1, 2, 3, 4}。如果写入失败,将调用 check(err)。_, err = f.Write([]byte{1, 2, 3, 4})check(err)//os.MkdirTemp 创建一个临时目录,类似于创建临时文件。返回的 dname 是新创建的临时目录的路径。dname, err := os.MkdirTemp("", "sampledir")check(err)fmt.Println("Temp dir name:", dname)//使用 defer 确保程序结束时删除临时目录及其内容。defer os.RemoveAll(dname)//使用 filepath.Join 函数将临时目录路径和文件名 "file1" 连接起来,生成完整的文件路径 fname。fname := filepath.Join(dname, "file1")//os.WriteFile 创建并写入文件,内容为字节 {1, 2},权限为 0666(可读、可写)。err = os.WriteFile(fname, []byte{1, 2}, 0666)check(err)
}
//输出
//Temp file name: /var/folders/8m/0gvzjwy56xn9d090yqjt4b_00000gn/T/sample2617831697
//Temp dir name: /var/folders/8m/0gvzjwy56xn9d090yqjt4b_00000gn/T/sampledir2719736875
🔍理解
- os.CreateTemp创建临时文件
- os.Remove删除临时文件
- os.MkdirTemp创建临时文件夹
- os.RemoveAll删除临时文件夹
💪无人扶我青云志,我自踏雪至山巅。

相关文章:
【go从零单排】Directories、Temporary Files and Directories目录和临时目录、临时文件
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在 Go 语言中,path/filepath 包提供了一组用于处理文件路径的函数&am…...
Diff 算法的误判
起源: for循环的:key的值使用index绑定,当循环列表条目变化更新,导致虚拟 DOM Diff 算法认为原有项被替换,而不是更新。 // vue2写法 错误例子 <template><div><button click"addItem">添加项目<…...
odoo 17 后端路由接口认证自定义
odoo 17 后端路由接口认证自定义 在接口中, 我们都知道有3中常用的认证方式 user 用户级认证public 访问时赋予公共用户none 不做任何用户级处理 一般不做数据库重要数据校验, 仅做访问处理 以上是源码提供的三种方式 接下来我们自定义一个认证方式 首先找到的这认证是在…...
租赁回收系统小程序
1.需求分析:首先,需要明确系统的功能和特点。这包括确定租赁回收的物品类型、用户群体、业务流程等。通过需求分析,可以确保系统能够满足市场和用户的需求。 2.系统设计:在需求分析的基础上,进行系统的整体设计。这包…...
SQL 注入详解:原理、危害与防范措施
文章目录 一、什么是SQL注入?二、SQL注入的工作原理三、SQL注入的危害1. 数据泄露2. 数据篡改3. 拒绝服务4. 权限提升 四、SQL注入的类型1. 基于错误的信息泄露2. 联合查询注入3. 盲注(1). 基于布尔响应的盲注(2). 基于时间延迟的盲注 4. 基于带外的注入 五、防范SQ…...
如何用Java爬虫“采集”商品订单详情的编程旅程
在这个数据驱动的世界里,如果你不是数据,那么你一定是在收集数据。就像蜜蜂采集花粉一样,我们程序员也需要采集数据,以便分析、优化和做出明智的决策。今天,我们就来聊聊如何使用Java编写一个爬虫,这个爬虫…...
《FreeRTOS任务基础知识篇》
FreeRTOS任务基础知识 1. 什么是多任务系统?2. FreeRTOS任务3. 任务状态3.1 运行态3.2 就绪态3.3 阻塞态3.4 挂起态 4. 任务优先级5. 任务的实现6. 任务控制块7. 任务堆栈 FreeRTOS的核心是任务管理,以下介绍FreeRTOS任务的一些基础知识。 1. 什么是多任…...
前端面试笔试(二)
目录 一、数据结构算法等综合篇 1.HTTP/2、ETag有关 二、代码输出篇 1.new URL,url中的hostname,pathname,href 扩展说一下url的组成部分和属性 URL的组成部分 urlInfo 对象的属性 2.一个递归的输出例子 3.数组去重的不普通方法1 4.数…...
基于Python 和 pyecharts 制作招聘数据可视化分析大屏
在本教程中,我们将展示如何使用 Python 和 pyecharts 库,通过对招聘数据的分析,制作一个交互式的招聘数据分析大屏。此大屏将通过不同类型的图表(如柱状图、饼图、词云图等)展示招聘行业、职位要求、薪资分布等信息。 …...
探索光耦:晶体管光耦——智能家居的隐形桥梁,让未来生活更智能
在这个日新月异的科技时代,智能家居正以前所未有的速度融入我们的日常生活,从智能灯光到温控系统,从安防监控到语音助手,每一处细节都透露着科技的温度与智慧。而在这场智能化浪潮中,一个看似不起眼却至关重要的组件—…...
三、模板与配置(上)
三、模板与配置 1、WXML模板语法-数据、属性绑定 讲解: 1-1、数据绑定的基本原则 在data中定义数据 Page({data: {//这里是你需要定义的数据} })在WXML中使用数据 {{ 你定义的数据 }}1-2、在data中定义页面的数据 在页面对应的.js文件中,把数据定…...
基于SpringBoot和Vue的公司文档管理系统设计与开发(源码+定制+开发)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
Java21 Switch最全使用说明
Java21 Switch最全使用说明 Java 21 对 switch 语句进行了重大的改进和增强,使其变得更加灵活和强大。本文将详细介绍 Java 21 中 switch 语句的各种用法,包括基本语法、新特性、高级用法和最佳实践。 1. 基本语法 1.1 传统的 switch 语句 传统的 sw…...
普通电脑上安装属于自己的Llama 3 大模型和对话客户端
#大模型下载地址:# Llama3 因为Hugging Face官网正常无法访问,因此推荐国内镜像进行下载: 官网地址:https://huggingface.co 国内镜像:https://hf-mirror.com GGUF 模型文件名称接受,如上述列表中&…...
微信小程序原生 canvas画布截取视频帧保存为图片并进行裁剪
html页面: 视频尺寸过大会画布会撑开屏幕,要下滑 尺寸和视频链接是从上个页面点击传过来的,可自行定义 <canvas id"cvs1" type"2d" style"width: {{videoWidth}}px;height: {{videoHeight}}px;"><…...
社交网络图中结点的“重要性”计算
题目描述 输入 输出 输入样例1 9 14 1 2 1 3 1 4 2 3 3 4 4 5 4 6 5 6 5 7 5 8 6 7 6 8 7 8 7 9 3 3 4 9 输出样例1 Cc(3)0.47 Cc(4)0.62 Cc(9)0.35 AC代码 #include <iostream> #include <vector> #include <queue> #include <iomanip>using na…...
前端(1)——快速入门HTML
参考: W3school 1. HTML 我使用的是vs code,在使用之前,先安装以下几个插件: Auto Rename TageHTML CSS SupportLive Server 1.1 HTML标签 HTML全称是 Hypertext Markup Language(超文本标记语言) HTML通过一系列的标签(也称为…...
gitlab角色、权限
GitLab是一个基于Web的Git仓库管理工具,它提供了一套完整的角色和权限管理机制,以控制用户对项目和仓库的访问和操作权限。以下是GitLab中不同角色的基本权限概述: 访客(Guest): 可以查看项目中的公开信息。…...
Python办公——批量eml文件提取附件
目录 专栏导读背景1、库的介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动…...
Spring Boot 中 Druid 连接池与多数据源切换的方法
Spring Boot 中 Druid 连接池与多数据源切换的方法 在Spring Boot项目中,使用Druid连接池和进行多数据源切换是常见的需求,尤其是在需要读写分离、数据库分片等复杂场景下。本文将详细介绍如何在Spring Boot中配置Druid连接池并实现多数据源切换。 一、…...
LCDWIKI SPI图形库:嵌入式TFT-LCD驱动核心架构与实战
1. LCDWIKI SPI 图形库深度解析:面向嵌入式显示驱动的底层架构与工程实践LCDWIKI SPI Library 是一款专为基于 SPI 接口的 TFT-LCD 显示模块设计的轻量级、高兼容性图形驱动核心库。它并非孤立的显示驱动,而是整个 LCDWIKI 显示生态系统的“基石类”&…...
低延迟多场景的Windows音频捕获解决方案:win-capture-audio实战指南
低延迟多场景的Windows音频捕获解决方案:win-capture-audio实战指南 【免费下载链接】win-capture-audio An OBS plugin that allows capture of independant application audio streams on Windows, in a similar fashion to OBSs game capture and Discords appli…...
前端性能优化终极指南:使用Javalin实现静态资源压缩与智能缓存
前端性能优化终极指南:使用Javalin实现静态资源压缩与智能缓存 【免费下载链接】javalin 项目地址: https://gitcode.com/gh_mirrors/jav/javalin 在现代Web应用开发中,前端资源的加载速度直接影响用户体验和搜索引擎排名。Javalin作为一款轻量级…...
英雄联盟智能助手:5个核心功能彻底改变你的游戏体验
英雄联盟智能助手:5个核心功能彻底改变你的游戏体验 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为繁琐的游戏…...
《QGIS快速入门与应用基础》240:指北针旋转与大小调整
作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...
staticFunctional:嵌入式零堆内存的std::function替代方案
1. staticFunctional:嵌入式系统中零动态内存开销的 std::function 替代方案1.1 设计动因与工程痛点在资源受限的嵌入式系统(如 ARM Cortex-M0/M4、AVR、ESP32、Teensy 系列)中,std::function的标准实现存在根本性兼容障碍。其典型…...
如何5步完成Unity游戏模组加载:MelonLoader终极指南
如何5步完成Unity游戏模组加载:MelonLoader终极指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 想要为心爱的Un…...
高效解决付费墙难题:Bypass Paywalls Clean实用技术指南
高效解决付费墙难题:Bypass Paywalls Clean实用技术指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字信息时代,付费墙已成为获取优质内容的主要障碍&…...
红外遥控技术原理与实现方案详解
红外遥控技术原理与实现方案1. 红外遥控技术概述红外遥控技术是一种利用红外光波进行短距离无线通信的技术方案,主要应用于家电控制领域。该技术通过调制红外光波来传输控制信号,具有成本低、实现简单、抗干扰能力强等特点。1.1 技术特点与应用场景红外遥…...
【BoClaw教程03】BoClaw实战:打工人常用技能
博云BoClaw官方教程系列(三)本教程聚焦打工人日常办公高频需求,详细讲解 BoClaw 在桌面整理、文档检索、PPT 制作、简历筛选、销售报表处理五大场景的实操方法、操作要点及避坑技巧,助力高效提升办公效率。1.桌面整理:…...
