一、Go基础知识38、文件操作:os 和 ioutil

一、os包的文件操作

在Go语言中,os包提供了与操作系统进行交互的功能,其中包括文件和目录的创建、打开、读取、写入等操作。

1、文件和目录的创建

创建目录

package main

import (
	"os"
)

func main() {
	err := os.Mkdir("example_dir", 0755)
	if err != nil {
		panic(err)
	}
}

解释
这个例子中,os.Mkdir函数用于创建一个名为 “example_dir” 的目录,0755是目录的权限。

创建文件

package main

import (
	"os"
)

func main() {
	file, err := os.Create("example_file.txt")
	if err != nil {
		panic(err)
	}
	defer file.Close()
}

解释
这个例子中,os.Create函数用于创建一个名为 “example_file.txt” 的文件,并通过defer语句确保在程序退出前关闭文件。

2、文件的读写操作

写入文件

package main

import (
	"os"
	"fmt"
)

func main() {
	file, err := os.Create("example_file.txt")
	if err != nil {
		panic(err)
	}
	defer file.Close()

	data := []byte("Hello, Go!")
	_, err = file.Write(data)
	if err != nil {
		panic(err)
	}
}

解释
这个例子中,使用file.Write函数将字符串 “Hello, Go!” 写入到文件中。

读取文件

package main

import (
	"os"
	"fmt"
	"io/ioutil"
)

func main() {
	file, err := os.Open("example_file.txt")
	if err != nil {
		panic(err)
	}
	defer file.Close()

	data, err := ioutil.ReadAll(file)
	if err != nil {
		panic(err)
	}
	fmt.Println(string(data))
}

解释
这个例子中,使用os.Open打开文件,然后使用ioutil.ReadAll读取文件中的全部内容,并将内容打印到控制台。

二、ioutil包

在Go语言中,ioutil包提供了一些方便的函数,用于简化文件的读取和写入操作。

1、读取整个文件

读取文件内容

package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	content, err := ioutil.ReadFile("example_file.txt")
	if err != nil {
		panic(err)
	}

	fmt.Println(string(content))
}

解释
这个例子中,ioutil.ReadFile函数用于读取文件 “example_file.txt” 的全部内容,并将内容作为字节切片返回。通过string(content)将字节切片转换为字符串并打印到控制台。

2、写入整个文件

写入文件内容

package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	data := []byte("Hello, ioutil!")

	err := ioutil.WriteFile("example_ioutil.txt", data, 0644)
	if err != nil {
		panic(err)
	}

	fmt.Println("File written successfully.")
}

解释
这个例子中,ioutil.WriteFile函数用于将字节切片内容写入到文件 “example_ioutil.txt” 中,0644是文件的权限。如果文件不存在,则会创建文件;如果文件已存在,则会截断文件内容。

3、读取目录内容

读取目录中的文件列表

package main

import (
	"fmt"
	"io/ioutil"
)

func main() {
	files, err := ioutil.ReadDir("example_dir")
	if err != nil {
		panic(err)
	}

	fmt.Println("Files in directory:")
	for _, file := range files {
		fmt.Println(file.Name())
	}
}

解释
这个例子中,ioutil.ReadDir函数用于读取目录 “example_dir” 中的文件列表,并通过循环打印每个文件的名称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风不归Alkaid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值