龙岩做网站价格,判断网站做的好坏,纯流量卡免费申请入口,曰照网站小程序建设概述 在上一节的内容中#xff0c;我们介绍了Go的反射#xff0c;包括#xff1a;reflect.TypeOf、reflect.ValueOf、reflect.Value等。在本节中#xff0c;我们将介绍Go的文件操作。在Go语言中#xff0c;文件是一个抽象的概念#xff0c;表示的是一段连续的字节序列。文…概述 在上一节的内容中我们介绍了Go的反射包括reflect.TypeOf、reflect.ValueOf、reflect.Value等。在本节中我们将介绍Go的文件操作。在Go语言中文件是一个抽象的概念表示的是一段连续的字节序列。文件操作主要包括文件的创建、读取、写入、删除以及目录的创建、删除、文件遍历等。Go语言提供了许多内置的函数和包使得文件操作变得非常简单和高效。 读取文件 要读取文件需要先打开文件。打开文件可以使用os.Open()函数该函数返回一个*os.File类型的文件对象表示已经打开的文件。要读取一个文件的内容可以使用os包或bufio包提供的函数。 在下面的示例代码中我们首先使用os.Open()函数打开了文件test.txt。然后我们使用bufio.NewScanner函数创建了一个Scanner对象scanner并逐行读取文件。如果文件读取时发生了错误可通过scanner.Err()函数获取错误信息。
package mainimport os
import fmt
import bufiofunc main() {// 打开文件file, err : os.Open(test.txt)if err ! nil {fmt.Println(Open failed: , err)return}defer file.Close()// 逐行读取文件scanner : bufio.NewScanner(file)for scanner.Scan() {line : scanner.Text()// 处理每一行数据fmt.Println(line data: , line)}if err : scanner.Err(); err ! nil {// 处理读取错误fmt.Println(Read failed: , err)}
} 写入文件 要写入文件可以使用os包提供的Create()函数创建一个新文件并使用Write()函数或WriteString()函数写入数据。 在下面的示例代码中我们首先使用os.Create()函数创建了文件test.txt。然后我们使用WriteString()函数写入了字符串Hello, CSDN。最后我们通过defer语句关闭了文件释放了系统资源。
package mainimport os
import fmtfunc main() {// 创建文件file, err : os.Create(test.txt)if err ! nil {fmt.Println(Create failed: , err)return}defer file.Close()text : Hello, CSDN// 向文件中写入字符串_, err file.WriteString(text)if err ! nil {fmt.Println(Write failed: , err)}
} 在进行文件读写操作时需要注意以下几点 1、打开文件后一定要记得关闭文件以释放资源可以使用defer语句来确保在函数结束时关闭文件。 2、在读取或写入文件时需要检查是否有错误发生并进行适当的错误处理。 删除文件 要删除一个文件可以使用os.Remove()函数。
package mainimport os
import fmtfunc main() {err : os.Remove(test.txt) if err ! nil {fmt.Println(Remove failed:, err)} else {fmt.Println(Remove success)}
} 目录操作 目录的操作包括创建目录、删除目录、判断目录是否存在等。 在下面的示例代码中我们首先使用os.Mkdir()函数创建了一个名为test的新目录。第一个参数是目录的路径第二个参数是目录的权限模式0755表示拥有者具有读、写和执行权限而组和其他用户具有读和执行权限。接下来我们通过os.Stat()函数判断目录是否存在。如果存在则调用os.Remove()函数删除刚刚创建的目录。
package mainimport os
import fmtfunc main() {// 创建目录err : os.Mkdir(test, 0755)if err ! nil {fmt.Println(Mkdir failed:, err)return} else {fmt.Println(Mkdir success)}// 判断目录是否存在_ , err2 : os.Stat(test)if err2 nil {// 删除目录err os.Remove(test)if err ! nil {fmt.Println(Remove failed:, err)} else {fmt.Println(Remove success)}} else {fmt.Println(Path not exist)}
} 遍历目录下文件 在Go语言中可以使用os包中的Readdir函数来读取目录的内容。Readdir函数返回一个[]os.DirEntry类型的切片其中包含了目录中所有文件和子目录的信息。 在下面的示例代码中我们使用os.Open函数打开名为doc的目录并使用Readdir函数列出其中的所有文件。然后通过遍历files切片可以打印出每个文件的名称。注意在使用Readdir函数时传入-1作为参数将返回所有的文件包括隐藏文件。
package mainimport os
import fmtfunc main() {// 打开目录dir, err : os.Open(doc)if err ! nil {fmt.Println(Open failed:, err)return}defer dir.Close()// 读取目录files, err : dir.Readdir(-1)if err ! nil {fmt.Println(Readdir failed:, err)} else {// 遍历目录下文件for _, file : range files {fmt.Println(file.Name())}}
}