Go语言(3)IO操作
创建文件夹
package main
import "os"
func main() {
// 创建文件夹
os.Mkdir("1", 777)
}
删除文件夹
package main
import "os"
func main() {
//删除文件夹
os.Remove("1")
}
检查文件是否存在
package main
import (
"fmt"
"os"
)
/**
检查文件是否存在
*/
func FileExists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
return false, err
}
func main() {
f, _ := FileExists("1.txt")
fmt.Println(f)
}
创建文件
package main
import "os"
func main() {
os.Create("2.txt")
}
文件写入(io.WriteString)
package main
import (
"io"
"os"
)
func main() {
file, _ := os.OpenFile("2.txt", os.O_APPEND, 0777)
io.WriteString(file, "hello")
}
文件写入(ioutil.WriteFile)
package main
import (
"io/ioutil"
)
func main() {
ioutil.WriteFile("3.txt", []byte("hello"), 0666)
}
文件写入(File)
package main
import (
"os"
)
func main() {
f, _ := os.Create("4.txt")
defer f.Close()
f.Write([]byte("hello"))
f.WriteString("world")
f.Sync()
}
文件写入(bufio.NewWriter)
package main
import (
"bufio"
"os"
)
func main() {
os.Create("5.txt")
f, _ := os.OpenFile("5.txt", os.O_APPEND, 0777)
w := bufio.NewWriter(f)
w.WriteString("hello")
w.Flush()
f.Close()
}
删除文件
package main
import (
"os"
)
func main() {
os.Remove("5.txt")
}
文件重命名
package main
import "os"
func main() {
os.Rename("1.jpg", "2.jpg")
}
文件拷贝
package main
import (
"io"
"os"
)
// 文件拷贝
// 目标文件
// 原文件
func CopyFile(dstName, srcName string) (written int64, err error) {
src, err := os.Open(srcName)
if err != nil {
return
}
defer src.Close()
dst, err := os.OpenFile(dstName, os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
return
}
defer dst.Close()
return io.Copy(dst, src)
}
func main() {
CopyFile("5.txt", "4.txt") // os.Args[1]为目标文件,os.Args[2]为源文件
}
文件切割
package main
import (
"math"
"os"
"strconv"
)
const CHUNKSIZE int64 = 1024 * 64
func main() {
// 获取文件的信息
fileInfo, _ := os.Stat("xingkong.jpg")
//计算每一个区块的大小
num := int(math.Ceil(float64(fileInfo.Size()) / float64(CHUNKSIZE)))
//打开文件
fi, _ := os.OpenFile("xingkong.jpg", os.O_RDONLY, os.ModePerm)
//
b := make([]byte, CHUNKSIZE)
//
var i int64 = 1
//
for ; i <= int64(num); i++ {
//移动指针
fi.Seek((i-1)*(CHUNKSIZE), 0)
if len(b) > int((fileInfo.Size() - (i-1)*CHUNKSIZE)) {
//分配内存
b = make([]byte, fileInfo.Size()-(i-1)*CHUNKSIZE)
}
//
fi.Read(b)
// 创建块的文件
f, _ := os.OpenFile(strconv.Itoa(int(i))+".db", os.O_CREATE|os.O_WRONLY, os.ModePerm)
//写入块文件
f.Write(b)
//关闭文件
f.Close()
}
}
文件合并
package main
import (
"fmt"
"io/ioutil"
"os"
"strconv"
)
func main() {
fii, _ := os.OpenFile("1.jpg", os.O_CREATE|os.O_WRONLY|os.O_APPEND, os.ModePerm)
for i := 1; i <= 85; i++ {
f, err := os.OpenFile(strconv.Itoa(int(i))+".db", os.O_RDONLY, os.ModePerm)
if err != nil {
fmt.Println(err)
return
}
b, _ := ioutil.ReadAll(f)
fii.Write(b)
f.Close()
}
}
网友评论