非零基础自学Golang 第11章 文件操作 11.1 目录基本操作 11.1.2 创建目录 11.1.3 删除目录

news2024/9/25 1:24:17

非零基础自学Golang

文章目录

      • 非零基础自学Golang
      • 第11章 文件操作
        • 11.1 目录基本操作
          • 11.1.2 创建目录
          • 11.1.3 删除目录

第11章 文件操作

11.1 目录基本操作

11.1.2 创建目录

Go标准库中的os库提供了平台无关性的操作系统功能接口。

创建目录时可以使用os库的如下接口:

func Mkdir(name string, perm FileMode) error

Mkdir接口函数使用指定的权限和名称创建一个目录。如果出错,会返回*PathError底层类型(即语言自带的类型)的错误。

[ 动手写11.1.4]

package main

import (
	"fmt"
	"os"
)

func createDir(path string, dirName string) {

	dirPath := path + "\\" + dirName
	fmt.Println("Create Dir => " + dirPath)

	//0777 也可以写成os.ModePerm
	err := os.Mkdir(dirPath, 07777)

	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Println("Create Success!")
	}

	os.Chmod(dirPath, 0777)
}

func main() {

	createDir("C:\\Users", "test")
	createDir("C:\\Windows\\Temp", "test")
}

运行结果

在这里插入图片描述

可以发现,当没有足够的权限去创建一个文件夹时,会报出“Access is denied”的错误,提示我们权限不足,导致文件夹创建失败。

我们再次运行这段代码后,运行结果如下:

在这里插入图片描述

当“C:\Windows\Temp\test”文件夹存在时,再次调用Mkdir接口函数会抛出“文件夹已存在”的错误。

Mkdir一次只能创建一级目录,如果使用此函数创建多级目录则会报“The system cannot find the path specified.”的错误。

这时只能使用另一个创建目录的接口函数:

func MkdirAll(path string, perm FileMode) error

MkdirAll使用指定的权限和名称创建一个目录,包括任何必要的上级目录,并返回nil,否则返回错误。

例如在目录“C:\Windows\Temp\”创建目录“C:\Windows\Temp\dir1\dir2\dir3”:

[ 动手写 11.1.5 ]

package main

import (
   "fmt"
   "os"
)

func createDirAll(path string, dirName string) {

   dirPath := path + "\\" + dirName

   fmt.Println("Create Dir => " + dirPath)

   // 也可以写 0777
   err := os.MkdirAll(dirPath, os.ModePerm)

   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println("Create Success!")
   }

   os.Chmod(dirPath, 0777)

}

func main() {

   createDirAll("C:\\Windows\\Temp", "dir1\\dir2\\dir3")
}

运行结果

在这里插入图片描述

查看目录

在这里插入图片描述

再次运行动手写11.1.5,运行结果如下:

在这里插入图片描述

使用MkdirAll创建一个目录path,当path已经存在时,不会报错,直接返回nil。这一点与Mkdir有一定的区别,需要注意。

11.1.3 删除目录

删除目录可以使用如下接口:

func Remove(name string) error

Remove删除name指定的文件或目录。此接口只能删除空文件夹,如果文件夹非空,则会删除失败,返回“文件夹非空”错误。

[ 动手写 11.1.6 ]

package main

import (
   "fmt"
   "os"
)

func deleteEmptyDir(dirPath string) {

   fmt.Println("Delete Dir => " + dirPath)

   err := os.Remove(dirPath)

   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println("Delete Success!")
   }
}

func main() {

   deleteEmptyDir("C:\\Windows\\Temp\\test")
}

现在的test 目录

在这里插入图片描述

OK,运行结果

在这里插入图片描述

如果文件夹非空,运行结果如下:

在这里插入图片描述

在这里插入图片描述

毕竟我们之前创了 这么多级

对于非空文件夹,可以使用以下接口删除:

func RemoveAll(path string) error

[ 动手写 11.1.7 ]

package main

import (
   "fmt"
   "os"
)

func deleteNotEmptyDir(dirPath string) {
   fmt.Println("Delete Dir => " + dirPath)

   err := os.RemoveAll(dirPath)

   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println("Delete Success!")
   }
}

func main() {

   deleteNotEmptyDir("C:\\Windows\\Temp\\dir1")
}

运行结果

在这里插入图片描述

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

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

相关文章

基于JSP的网络考试系统/在线考试系统的设计与实现

摘 要 网络考试系统是由高校的一个网络考试,按照章程自主开展网络考试系统。网络考试是实施素质教育的重要途径和有效方式,在加强校园文化建设、提高学生综合素质、引导学生适应社会、促进学生成才就业等方面发挥着重要作用,是新形势下有效凝…

[hadoop全分布部署]安装Hadoop、验证Hadoop①

👨‍🎓👨‍🎓博主:发量不足 个人简介:耐心,自信来源于你强大的思想和知识基础!! 📑📑本期更新内容:安装Hadoop、验证Hadoop①&#…

【免杀前置课——Windows编程】十九、内存管理—堆,Windows如何管理内存数据?堆内存相关API

内存管理内存管理—堆Windows是如何管理内存数据的?堆内存管理相关API内存管理—堆 每个进程都有自己独立的4G内存空间,高2G操作系统内核使用,低 2G用户使用。 每个进程中我们使用的都是虚拟地址,虚拟机地址到物理地址的转换由操作系统内核…

1. 找出字符串中第一个匹配项的下标

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack &qu…

图形学中那些你需要知道的变换概念

前言 在前面的OpenGL ES 教程中,随着教程的进展,我们介绍并使用过很多变换矩阵,但没有系统总结过图形学涉及到的种种变换,因此这篇文章再次回顾“变换”这个主题。 变换 通俗来讲,所谓的变换就像编程中调用一个函数…

非零基础自学Golang 第12章 接口与类型 12.1 接口定义

非零基础自学Golang 文章目录非零基础自学Golang第12章 接口与类型12.1 接口定义12.1.1 接口的定义12.1.2 鸭子类型第12章 接口与类型 在使用接口时,我们经常会遇到这样一个问题:如何判断一个接口的类型?这时,我们就需要学习使用…

Dubbo 4 Dubbo 高级特性 4.1 dubbo-admin 管理平台 4.1.3 dubbo-admin的简单使用

Dubbo 【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】 4 Dubbo 高级特性 文章目录Dubbo4 Dubbo 高级特性4.1 dubbo-admin 管理平台4.1.3 dubbo-admin的简单使用4.1 dubbo-admin 管理平台 4.1.3 dubbo-admin的简单使用 注意:Dubbo Admin【服务Mock】【服务…

几个字就能生成画作,AIGC的时代即将到来

一、前言 最近AI绘画、聊天、代码生成可以说是刮起了一阵风,席卷了互联网。各大网站都在疯狂刷屏相关的内容,也收到了各界的热烈的关注。无论是AI绘画还是聊天这类的技术都属于同一个领域:人工智能生成内容(AIGC) 小伙…

SAP UI5 Mock Server 在响应 OData 请求时的单步调试

SAPUI5 中包含的模拟服务器模仿 OData V2 后端调用。 它模拟 OData 提供程序并且完全基于客户端,这意味着不需要与远程主机的网络连接。 它拦截对服务器的 HTTP 调用,并向客户端提供伪造的输出。 所有这些对于数据绑定和 OData 模型的使用都是透明的&…

【Python百日进阶-数据分析】Day131 - plotly柱状图(条形图):go.bar()实例2

文章目录4.2.14 多类别轴型条形图4.2.15 基本水平条形图4.2.16 彩色水平条形图4.2.17 条形图的调色板4.2.18 带直线图的条形图4.3 Dash中的条形图4.2.14 多类别轴型条形图 如果记录道具有x或y阵列,则轴类型将自动推断为多类别。 import plotly.graph_objects as g…

Dubbo 4 Dubbo 高级特性 4.2 Dubbo 常用高级配置 4.2.2 地址缓存 4.2.3 超时

Dubbo 【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】 4 Dubbo 高级特性 文章目录Dubbo4 Dubbo 高级特性4.2 Dubbo 常用高级配置4.2.2 地址缓存4.2.3 超时4.2 Dubbo 常用高级配置 4.2.2 地址缓存 【一个问题】 如果 注册中心挂了,服务是否可以…

计算机毕业设计ssm+vue基本微信小程序的垃圾分类系统

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,垃圾分类小程序就是信息时代变革中的产物之一。 任何系统都要遵循系统…

uni-app卖座电影多端开发纪实(四):用户交互

@Tabs切换 + 分页加载 Tabs切换效果图 正在加载效果图 没有更多效果图 @uView组件使用 uView/Tabs的使用 uView/Tabs文档 先搂一眼! uView/loadMore的使用 uView/loadMore文档先搂一眼! @准备工作 电影条目组件封装 components/FilmItem.vue

2022/12/17 mysql 索引基本原理解读

1什么是索引 索引是帮助MySQL 高效获取数据的数据结构,通过使用索引可以在查询的过程中,使用优化隐藏器,提高系统的性能。 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 优势 类似于书籍的目录索引,提高数…

java缓存模块,ehcache/guava cache/自定义spring的CacheManager/自定义缓存

如ehcache,guava cache,redis 也有将ehcache,guava cache分级为单机缓存 将redis分为分布式缓存 ehcache官网:https://www.ehcache.org/ 这里主要说下ehcache和guava cache 单独使用ehcache(当然真正企业开发并不会单独使用ehcache,而是会和Spring或者SpringBoot集成使用) …

什么是建筑中的“光储直柔”

建筑“光储直柔”与零碳电力如影随形(2021) 《2030 年前碳达峰行动方案》(国发〔2021〕23 号)中明确提出:提高建筑终端电气化水平,建设集光伏发电、储能、直流配电、柔性用电于一体的“光储直柔”建筑。到 …

广告、推荐模型加速策略整理

当我们尝试那些开箱即用的GPU服务时,很快意识到在经济高效地利用GPU运行推荐模型服务之前需要对其优化。我们首先使用分析工具来分析在模型推理过程中发生了什么,在仔细观察分析结果时,我们注意到时间线上有大量的小CUDA Kernel在执行。 这是…

[附源码]Python计算机毕业设计Django汽配管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

linux内核内存管理-brk系统调用

【推荐阅读】 深入linux内核架构--进程&线程 浅谈linux 内核网络 sk_buff 之克隆与复制 浅析linux内核网络协议栈--linux bridge 尽管可见度不高,brk也许是最常使用的系统调用了,用户进程通过它向内核申请空间。人们常常并不意识到在调用brk&…

Python Flask构建微信小程序订餐系统 (三)

🔥 管理员登录和列表界面 🔥 账号相关登录界面 1、新建 User 对象文件 2、新建login (登录的方法)、edit (编辑的方法)、reset-pwd(重置密码的方法)方法 3、新建对应的视图层 账户管理相关界面 1、新建 Account 对象文件 2、新建index(账户列表)、set(新…