func main() {
var wireteString = "测试n" # 定义一个输入字符串
var filename = "./output1.txt" # 定义一个输出文件名字
var f *os.File # 按位去文件对象
var err1 error # 定义一个错误对象
# 第一种方式: 使用 io.WriteString 写入文件
if checkFileIsExist(filename) { //如果文件存在
f, err1 = os.OpenFile(filename, os.O_APPEND, 0666) //打开文件
fmt.Println("文件存在")
} else {
f, err1 = os.Create(filename) //创建文件
fmt.Println("文件不存在")
}
check(err1)
# 写入文件
n, err1 := io.WriteString(f, wireteString) //写入文件(字符串)
check(err1)
fmt.Printf("写入 %d 个字节n", n)
# 第二种方式: 使用 ioutil.WriteFile 写入文件
# 定义一个字节类型切片,内部元素是写入的字符串
var d1 = []byte(wireteString) # 将io流写入到文件中,并且定义文件的权限
err2 := ioutil.WriteFile("./output2.txt", d1, 0666) //写入文件(字节数组)
check(err2)
# 第三种方式: 使用 File(Write,WriteString) 写入文件
f, err3 := os.Create("./output3.txt") //创建文件
check(err3)
defer f.Close() # 最后都会关闭文件
n2, err3 := f.Write(d1) //写入文件(字节数组) 写入的也是流,返回的是文件个数,
check(err3)
fmt.Printf("写入 %d 个字节n", n2)
n3, err3 := f.WriteString("writesn") //写入文件(字符数组)
fmt.Printf("写入 %d 个字节n", n3)
f.Sync()
# 第四种方式: 使用 bufio.NewWriter 写入文件
w := bufio.NewWriter(f) //创建新的 Writer 对象
n4, err3 := w.WriteString("bufferedn")
fmt.Printf("写入 %d 个字节n", n4)
w.Flush()
f.Close()
}
场景:需要写入文件,并且不需要输出谢了多少个字符
使用了ioutil
content := []byte(tmp) #tmp获取的输入字符串
//将指定内容写入到文件中
err1 := ioutil.WriteFile(dest, content, 0755) # dest是存储文件的名字
# 只返回一个错误对象
if err1 != nil {
fmt.Println("write error", err1)
} else {
fmt.Printf("%v", 1)
}
创建文本文件:
f,err := os.Create(fileName)
defer f.Close()
if err !=nil {
fmt.Println(err.Error())
} else {
_,err=f.Write([]byte("要写入的文本内容"))
checkErr(err)
}
读取文件
f, err := os.OpenFile(fileName, os.O_RDONLY,0600)
defer f.Close()
if err !=nil {
fmt.Println(err.Error())
} else {
contentByte,err=ioutil.ReadAll(f)
checkErr(err)
fmt.Println(string(contentByte))
}
OpenFile的用法
//打开方式
const (
//只读模式
O_RDONLY int = syscall.O_RDONLY // open the file read-only.
//只写模式
O_WRONLY int = syscall.O_WRONLY // open the file write-only.
//可读可写
O_RDWR int = syscall.O_RDWR // open the file read-write.
//追加内容
O_APPEND int = syscall.O_APPEND // append data to the file when writing.
//创建文件,如果文件不存在
O_CREATE int = syscall.O_CREAT // create a new file if none exists.
//与创建文件一同使用,文件必须存在
O_EXCL int = syscall.O_EXCL // used with O_CREATE, file must not exist
//打开一个同步的文件流
O_SYNC int = syscall.O_SYNC // open for synchronous I/O.
//如果可能,打开时缩短文件
O_TRUNC int = syscall.O_TRUNC // if possible, truncate file when opened.
)