当前位置: 首页 > news >正文

【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 算法的误判

起源&#xff1a; for循环的:key的值使用index绑定&#xff0c;当循环列表条目变化更新&#xff0c;导致虚拟 DOM Diff 算法认为原有项被替换&#xff0c;而不是更新。 // vue2写法 错误例子 <template><div><button click"addItem">添加项目<…...

odoo 17 后端路由接口认证自定义

odoo 17 后端路由接口认证自定义 在接口中, 我们都知道有3中常用的认证方式 user 用户级认证public 访问时赋予公共用户none 不做任何用户级处理 一般不做数据库重要数据校验, 仅做访问处理 以上是源码提供的三种方式 接下来我们自定义一个认证方式 首先找到的这认证是在…...

租赁回收系统小程序

1.需求分析&#xff1a;首先&#xff0c;需要明确系统的功能和特点。这包括确定租赁回收的物品类型、用户群体、业务流程等。通过需求分析&#xff0c;可以确保系统能够满足市场和用户的需求。 2.系统设计&#xff1a;在需求分析的基础上&#xff0c;进行系统的整体设计。这包…...

SQL 注入详解:原理、危害与防范措施

文章目录 一、什么是SQL注入&#xff1f;二、SQL注入的工作原理三、SQL注入的危害1. 数据泄露2. 数据篡改3. 拒绝服务4. 权限提升 四、SQL注入的类型1. 基于错误的信息泄露2. 联合查询注入3. 盲注(1). 基于布尔响应的盲注(2). 基于时间延迟的盲注 4. 基于带外的注入 五、防范SQ…...

如何用Java爬虫“采集”商品订单详情的编程旅程

在这个数据驱动的世界里&#xff0c;如果你不是数据&#xff0c;那么你一定是在收集数据。就像蜜蜂采集花粉一样&#xff0c;我们程序员也需要采集数据&#xff0c;以便分析、优化和做出明智的决策。今天&#xff0c;我们就来聊聊如何使用Java编写一个爬虫&#xff0c;这个爬虫…...

《FreeRTOS任务基础知识篇》

FreeRTOS任务基础知识 1. 什么是多任务系统&#xff1f;2. FreeRTOS任务3. 任务状态3.1 运行态3.2 就绪态3.3 阻塞态3.4 挂起态 4. 任务优先级5. 任务的实现6. 任务控制块7. 任务堆栈 FreeRTOS的核心是任务管理&#xff0c;以下介绍FreeRTOS任务的一些基础知识。 1. 什么是多任…...

前端面试笔试(二)

目录 一、数据结构算法等综合篇 1.HTTP/2、ETag有关 二、代码输出篇 1.new URL&#xff0c;url中的hostname&#xff0c;pathname&#xff0c;href 扩展说一下url的组成部分和属性 URL的组成部分 urlInfo 对象的属性 2.一个递归的输出例子 3.数组去重的不普通方法1 4.数…...

基于Python 和 pyecharts 制作招聘数据可视化分析大屏

在本教程中&#xff0c;我们将展示如何使用 Python 和 pyecharts 库&#xff0c;通过对招聘数据的分析&#xff0c;制作一个交互式的招聘数据分析大屏。此大屏将通过不同类型的图表&#xff08;如柱状图、饼图、词云图等&#xff09;展示招聘行业、职位要求、薪资分布等信息。 …...

探索光耦:晶体管光耦——智能家居的隐形桥梁,让未来生活更智能

在这个日新月异的科技时代&#xff0c;智能家居正以前所未有的速度融入我们的日常生活&#xff0c;从智能灯光到温控系统&#xff0c;从安防监控到语音助手&#xff0c;每一处细节都透露着科技的温度与智慧。而在这场智能化浪潮中&#xff0c;一个看似不起眼却至关重要的组件—…...

三、模板与配置(上)

三、模板与配置 1、WXML模板语法-数据、属性绑定 讲解&#xff1a; 1-1、数据绑定的基本原则 在data中定义数据 Page({data: {//这里是你需要定义的数据} })在WXML中使用数据 {{ 你定义的数据 }}1-2、在data中定义页面的数据 在页面对应的.js文件中&#xff0c;把数据定…...

基于SpringBoot和Vue的公司文档管理系统设计与开发(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

Java21 Switch最全使用说明

Java21 Switch最全使用说明 Java 21 对 switch 语句进行了重大的改进和增强&#xff0c;使其变得更加灵活和强大。本文将详细介绍 Java 21 中 switch 语句的各种用法&#xff0c;包括基本语法、新特性、高级用法和最佳实践。 1. 基本语法 1.1 传统的 switch 语句 传统的 sw…...

普通电脑上安装属于自己的Llama 3 大模型和对话客户端

#大模型下载地址&#xff1a;# Llama3 因为Hugging Face官网正常无法访问&#xff0c;因此推荐国内镜像进行下载&#xff1a; 官网地址&#xff1a;https://huggingface.co 国内镜像&#xff1a;https://hf-mirror.com GGUF 模型文件名称接受&#xff0c;如上述列表中&…...

微信小程序原生 canvas画布截取视频帧保存为图片并进行裁剪

html页面&#xff1a; 视频尺寸过大会画布会撑开屏幕&#xff0c;要下滑 尺寸和视频链接是从上个页面点击传过来的&#xff0c;可自行定义 <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

参考&#xff1a; W3school 1. HTML 我使用的是vs code&#xff0c;在使用之前&#xff0c;先安装以下几个插件&#xff1a; Auto Rename TageHTML CSS SupportLive Server 1.1 HTML标签 HTML全称是 Hypertext Markup Language(超文本标记语言) HTML通过一系列的标签(也称为…...

gitlab角色、权限

GitLab是一个基于Web的Git仓库管理工具&#xff0c;它提供了一套完整的角色和权限管理机制&#xff0c;以控制用户对项目和仓库的访问和操作权限。以下是GitLab中不同角色的基本权限概述&#xff1a; 访客&#xff08;Guest&#xff09;&#xff1a; 可以查看项目中的公开信息。…...

Python办公——批量eml文件提取附件

目录 专栏导读背景1、库的介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动…...

Spring Boot 中 Druid 连接池与多数据源切换的方法

Spring Boot 中 Druid 连接池与多数据源切换的方法 在Spring Boot项目中&#xff0c;使用Druid连接池和进行多数据源切换是常见的需求&#xff0c;尤其是在需要读写分离、数据库分片等复杂场景下。本文将详细介绍如何在Spring Boot中配置Druid连接池并实现多数据源切换。 一、…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...