文件目录的创建和删除
package main
import(
"fmt"
"os"
)
func main(){
os.Mkdir("./benben",0777)
os.MkdirAll("./benben/test",0777)
err:=os.Remove("./benben")
if err!=nil{
fmt.Println(err)
}
os.RemoveAll("./benben")
}
文件的创建
package main
import (
"os"
"fmt"
)
func main(){
file,err:=os.Create("a.txt")
if err!=nil{
fmt.Println(err)
}
defer file.Close()
}
文件的读取和写入
文件的读取
package main
import (
"fmt"
"io/ioutil"
"strings"
"os"
"strconv"
"bufio"
)
func main() {
Ioutil("mytestfile.txt")
OsIoutil("mytestfile.txt")
FileRead("mytestfile.txt")
BufioRead("mytestfile.txt")
}
func Ioutil(name string) {
if contents, err := ioutil.ReadFile(name); err == nil {
result := strings.Replace(string(contents), "\n", "", 1)
fmt.Println("Use ioutil.ReadFile to read a file:", result)
}
}
func OsIoutil(name string) {
if fileObj, err := os.Open(name); err == nil {
defer fileObj.Close()
if contents, err := ioutil.ReadAll(fileObj); err == nil {
result := strings.Replace(string(contents), "\n", "", 1)
fmt.Println("Use os.Open family functions and ioutil.ReadAll to read a file :", result)
}
}
}
func FileRead(name string) {
if fileObj, err := os.Open(name); err == nil {
defer fileObj.Close()
buf := make([]byte, 1024)
if n, err := fileObj.Read(buf); err == nil {
fmt.Println("The number of bytes read:"+strconv.Itoa(n), "Buf length:"+strconv.Itoa(len(buf)))
result := strings.Replace(string(buf), "\n", "", 1)
fmt.Println("Use os.Open and File's Read method to read a file:", result)
}
}
}
func BufioRead(name string) {
if fileObj, err := os.Open(name); err == nil {
defer fileObj.Close()
reader := bufio.NewReader(fileObj)
if result, err := reader.ReadString(byte('@')); err == nil {
fmt.Println("使用ReadSlince相关方法读取内容:", result)
}
buf := make([]byte, 1024)
if n, err := reader.Read(buf); err == nil {
fmt.Println("The number of bytes read:" + strconv.Itoa(n))
fmt.Println("Use bufio.NewReader and os.Open read file contents to a []byte:", string(buf))
}
}
}
文件的写入
package main
import (
"os"
"io"
"fmt"
"io/ioutil"
"bufio"
)
func main() {
name := "testwritefile.txt"
content := "Hello, xxbandy.github.io!\n"
WriteWithIoutil(name, content)
contents := "Hello, xuxuebiao\n"
WriteWithFileWrite(name, contents)
WriteWithIo(name, content)
WriteWithBufio(name, contents)
}
func WriteWithIoutil(name, content string) {
data := []byte(content)
if ioutil.WriteFile(name, data, 0644) == nil {
fmt.Println("写入文件成功:", content)
}
}
func WriteWithFileWrite(name, content string) {
fileObj, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
fmt.Println("Failed to open the file", err.Error())
os.Exit(2)
}
defer fileObj.Close()
if _, err := fileObj.WriteString(content); err == nil {
fmt.Println("Successful writing to the file with os.OpenFile and *File.WriteString method.", content)
}
contents := []byte(content)
if _, err := fileObj.Write(contents); err == nil {
fmt.Println("Successful writing to thr file with os.OpenFile and *File.Write method.", content)
}
}
func WriteWithIo(name, content string) {
fileObj, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
if err != nil {
fmt.Println("Failed to open the file", err.Error())
os.Exit(2)
}
if _, err := io.WriteString(fileObj, content); err == nil {
fmt.Println("Successful appending to the file with os.OpenFile and io.WriteString.", content)
}
}
func WriteWithBufio(name, content string) {
if fileObj, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644); err == nil {
defer fileObj.Close()
writeObj := bufio.NewWriterSize(fileObj, 4096)
if _, err := writeObj.WriteString(content); err == nil {
fmt.Println("Successful appending buffer and flush to file with bufio's Writer obj WriteString method", content)
}
buf := []byte(content)
if _, err := writeObj.Write(buf); err == nil {
fmt.Println("Successful appending to the buffer with os.OpenFile and bufio's Writer obj Write method.", content)
if err := writeObj.Flush(); err != nil {
panic(err)
}
fmt.Println("Successful flush the buffer data to file ", content)
}
}
}
引用:
https://cloud.tencent.com/developer/article/1044388