首页 > 其他分享 >golang 标准库(os)

golang 标准库(os)

时间:2024-08-26 11:07:34浏览次数:4  
标签:string err fmt golang 标准 func main os

os标准库实现了平台(操作系统)无关的编程接口。

1.创建文件

image

package main

import (
	"fmt"
	"os"
)

// 创建文件
func CreatFile(FileName string) {
	f, err := os.Create(FileName)
	if err != nil {
		fmt.Println("err:", err)
	} else {
		fmt.Printf("创建文件%v成功", f.Name()) //f.Name 获取文件名
	}
}

func main() {
	file := "D:/gowork/src/awesomeProject/lesson03/test.txt"
	CreatFile(file)
}

执行结果

创建文件D:/gowork/src/awesomeProject/lesson03/test.txt成功

2. 创建目录

image

package main

import (
	"fmt"
	"os"
)


// 创建目录
func CreatDir(DirName string) {
	//创建单个目录
	err := os.Mkdir(DirName, os.ModePerm) //os.ModePerm为Unix目录权限为0777
	if err != nil {
		fmt.Println("err:", err)
	}
	//创建多层目录
	err2 := os.MkdirAll(DirName, os.ModePerm)
	if err2 != nil {
		fmt.Println("err2:", err2)
	}
}

func main() {
	dir := "D:/gowork/src/awesomeProject/lesson03/abc"
	CreatDir(dir)
}

3. 删除文件、目录

image

package main

import (
	"fmt"
	"os"
)

func RemoveDir(Name string) {
	//删除单个目录或文件
	err := os.Remove(Name)
	if err != nil {
		fmt.Println("err:", err)
	}
	//删除目录和下面的子目录和文件
	err2 := os.RemoveAll(Name)
	if err2 != nil {
		fmt.Println("err2:", err2)
	}
}

func main() {
	dir := "D:/gowork/src/awesomeProject/lesson03/a"
	RemoveDir(dir)
}

4. 重命名文件

image

package main

import (
	"fmt"
	"os"
)

// 重命名或移动文件
func Rename(Name string, NewName string) {
	err := os.Rename(Name, NewName)
	if err != nil {
		fmt.Println("err:", err)
	}
}

func main() {
	file := "D:/gowork/src/awesomeProject/lesson03/test.log"
	newfile := "D:/gowork/src/awesomeProject/lesson02/test.txt"
	Rename(file, newfile)
}

5. 读文件

package main

import (
	"fmt"
	"os"
)

// 读文件
func ReadFile(FileName string) {
	b, err := os.ReadFile(FileName) //b为返回的字节类型切片([]byte)
	if err != nil {
		fmt.Println("err:", err)
	} else {
		fmt.Println("b:", string(b)) //将切片转为字符串
	}
}

func main() {
	file := "D:/gowork/src/awesomeProject/lesson03/test.log"
	ReadFile(file)
}

执行结果

b: 1,2,3
a,b,c
测试

6. 写文件

image

文件操作模式:
覆盖写:os.O_WRONLY | os.O_TRUNC
追加写:os.O_WRONLY | os.O_APPEND
读写并追加:os.O_RDWR | os.OS_APPEND
image

6.1 覆盖写入

package main

import (
	"fmt"
	"os"
)

// 写文件,会将之前的文件内容清空
func WriteFile(FileName string, s string) {
	//WriteFile的模式为O_WRONLY|O_CREATE|O_TRUNC
	err := os.WriteFile(FileName, []byte(s), os.ModePerm) //第一个参数为文件名,第二个参数为字节类型的切片,需要转换,第三个参数为文件的权限
	if err != nil {
		fmt.Println("err:", err)
	}
}

func main() {
	file := "D:/gowork/src/awesomeProject/lesson03/test.log"
	WriteFile(file, "hello")
}

6.2 追加写入

package main

import (
	"fmt"
	"os"
)

// 文件追加
func WriteFile1(FileName string, s string) {
	f, err := os.OpenFile(FileName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, os.ModePerm) //以追加的模式打开文件
	if err != nil {
		fmt.Println("err:", err)
	}
	defer f.Close() //关闭文件
	s1 := []byte(s) //将字符串类型转为字节切片类型
	_, err = f.Write(s1)
	if err != nil {
		fmt.Println("err:", err)
	}
}

func main() {
	file := "D:/gowork/src/awesomeProject/lesson03/test.log"
	WriteFile1(file, "\n123")
}

标签:string,err,fmt,golang,标准,func,main,os
From: https://www.cnblogs.com/LI-XinYu/p/17159850.html

相关文章

  • 2024年智能革命:HarmonyOS NEXT与盘古大模型5.0的颠覆性融合
    引言2024年,这一年注定在全球智能设备市场的历史上写下浓墨重彩的一笔。作为全球科技巨头,华为再次以其前瞻性的布局,推动了技术与应用的深度融合。在这个充满变革的时代,华为通过不断扩展的鸿蒙生态系统,重新定义了操作系统与AI技术的结合方式。你是否已经感受到这场变革的力量?在全......
  • Linux环境下的Mysql数据库入门-基于Centos系统
    关系型数据库:oracle===》收钱,大型的公司msyql===》开源的免费的sqlserver===>微软非关系型数据库:hbase===>大数据‘Redismangdb下载mysql:yuminstallmysqlyuminstallmysql-serverrpm-qa|grep-imysql===》查看数据库有没有安装好servicemysqld......
  • Authentication scenarios and recommendations MSAL vs Microsoft.Identity.Web
    AuthenticationscenariosandrecommendationsIfyouhaveawebapporanAPIrunninginAzureAppService,youcanrestrictaccesstoitbasedontheidentityoftheusersorapplicationsthatrequestit.AppServiceoffersseveralauthenticationsolution......
  • Redis入门篇 - CentOS 7下载、安装Redis实操演示
    文章记录了在CentOS7上,通过源码的形式,下载安装Redis的操作过程进入要安装Redis的目录cd/usr/local下载源码压缩包wgethttps://download.redis.io/redis-stable.tar.gz#不同版本可能地址不同下载完成后,使用ll命令检查,可以看到下载的压缩包:下载完成后,解压......
  • ROS机器人入门系列(二)实现HelloWorld(c++/python)
    一、实现流程1、创建工作空间2、创建功能包3、编辑源文件4、编辑配置文件5、编译并执行其中,c++和python的差异仅体现在3,4两部,其他流程基本一致。二、创建工作空间和创建功能包的实现2.1 创建工作空间并初始化(1)创建工作空间mkdir-p自定义工作空间名称/src这里......
  • FreeRTOS 快速入门(八)之任务通知
    目录一、任务通知1、基本概念2、优势及限制3、通知状态和通知值二、任务通知的使用1、xTaskNotifyGive/ulTaskNotifyTake2、xTaskNotify/xTaskNotifyWait3、xTaskNotifyAndQuery一、任务通知1、基本概念FreeRTOS从V8.2.0版本开始提供任务通知这个功能,每个任务......
  • 企业参与制定行业标准有哪些好处,如何提高参与制定行业标准的成功率
    在经济全球化和市场竞争白热化的大背景下,行业标准已成为企业竞争的重要战场。企业制定行业标准,不再是一种选择,而是通向卓越的必由之路。那么,这条道路究竟能为企业带来哪些显著的好处?企业参与制定行业标准具有以下诸多好处:1.提升企业竞争力:能够使企业在行业中占据领先地位......
  • 互联工厂数据交换标准:IPC-CFX
    大家好,我是Edison。全球电子制造主要集中在中国,面向未来工业4.0、中国制造2025的战略转型升级,互联互通是基础、数据是核心,如何从用户角度来定义设备加工数据的内容完整性、有效性、可扩展性将是工厂通讯连接交换的工作重点。IPC-CFX是什么?首先,解释下这两个缩写的意思:IPC是国际......
  • Centos7(最小化安装)系统源代码安装mysql5.7.44版本
    官网下载mysql源代码安装包步骤(旧档案-版本下载方式)-CSDN博客下载cmake操作步骤-CSDN博客下载ncurses操作步骤-CSDN博客下载bison操作步骤-CSDN博客下载boost操作步骤-CSDN博客安装之前由于是最小化安装centos7安装一些开发环境和工具包文章使用国内阿里源cd/etc/yum.r......
  • golang interface{} Type assertions类型断言 x.(T) 和Type switches类型选择 switch
    在golang的开发中,我们经常会用到类型断言typeassertions和switchx.(type)类型选择,他们都可以对interface{}空接口类型的数据进行类型断言,他们的功能类似但是有区别,区别如下:共同点:都可以对interface{} /any类型的数据进行数据类型的断言区别:  类型断言x.(T)......