外部读写
操作终端相关的文件句柄常量
- os.Stdin:标准输入
- os.Stdout:标准输出
- os.Stderr:标准错误输出
fmt.Fprintf(os.Stdout, "do balance err\n") // 相当于fmt.Println()
fmt.Println("Please enter your file name") // 打印到终端
fmt.Scanln(&firstName, &lastName) // 只能读空格分隔的字符串
fmt.Scanf("%s %s", &firstName, &lastName)
fmt.Printf("Hi %s %s!\n", firstName, lastName)
// 使用Sscanf提取内容
var str = "stu01 18 18.09"
var stu Students
// fmt.Sscanf(要提取的字符串, 提取格式, 提取到哪儿...)
fmt.Sscanf(str, "%s %d %f", &stu.Name, &stu.Age, &stu.Score)
fmt.Println(stu) // {stu01 18 18.09}
package main
import (
"bufio"
"fmt"
"os"
)
var inputReader *bufio.Reader
var input string
var err error
func main() {
inputReader = bufio.NewReader(os.Stdin)
fmt.Println("Please enter some input: ")
input, err = inputReader.ReadString('\n')
if err == nil {
fmt.Printf("The input was %s\n", input)
}
}
-
-
关闭一个文件:File.Close()
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
file, e := os.Open("/home/ericjin/Desktop/test.txt")
if e != nil {
fmt.Printf("open file error:%v\n", e)
return
}
defer file.Close()
reader := bufio.NewReader(file) // 将文件读取到缓存里面
for {
s, i := reader.ReadString('\n')
if i == io.EOF {
// 文件读完了
return
}
fmt.Printf("the line was %s", s)
}
}
package main
import (
"fmt"
"io/ioutil"
"os"
)
func main() {
inputFile := "/home/ericjin/Desktop/test.txt"
outFile := "/home/ericjin/Desktop/test1.txt"
bytes, e := ioutil.ReadFile(inputFile) // 读取整个文件到字节数组
if e != nil {
fmt.Fprint(os.Stderr, "File Error: %v\n", e)
return
}
fmt.Printf("%s\n", string(bytes))
err := ioutil.WriteFile(outFile, bytes, 0x64) // 将内容写到文件中
if err != nil {
panic(err.Error())
}
}
package main
import (
"bufio"
"compress/gzip"
"fmt"
"os"
)
func main() {
fName := "MyFile.gz"
var r *bufio.Reader
// 打开文件
fi, err := os.Open(fName)
defer fi.Close()
if err != nil {
fmt.Fprint(os.Stderr, "err %v\n", err)
}
// 解压缩
fz, err := gzip.NewReader(fi)
if err != nil {
fmt.Fprint(os.Stderr, "err %v\n", err)
}
// 读取文件内容
r = bufio.NewReader(fz)
for {
line, err := r.ReadString('\n')
if err != nil {
fmt.Fprint(os.Stderr, "err %v\n", err)
}
fmt.Println(line)
}
}
-
-
Open一个文件,通过bufio放到缓冲区里面读
-
通过ioutil整个读取
os.OpenFile("test.txt", os.O_WRONLY|os.O_CREATE, 0666)
第二个参数:文件的打开模式
-
-
os.O_CREATE 创建文件
-
os.O_RDONLY 只读
-
os.O_RDWR 读写
-
os.O_TRUNC 清空
第三个参数:权限控制
-
r 004
-
w 002
-
x 001
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
outputFile, outputErr := os.OpenFile("outPutFile.txt", os.O_WRONLY|os.O_CREATE, 0666)
// 关闭文件
defer outputFile.Close()
if outputErr != nil {
fmt.Fprint(os.Stderr, "err %v\n", outputErr)
return
}
writer := bufio.NewWriter(outputFile)
outputStr := "hello world\n"
for i := 0; i < 10; i++ {
writer.WriteString(outputStr)
}
// 将writer里面的数据刷新到磁盘
writer.Flush()
}
package main
import (
"io"
"os"
)
func main() {
source, err := os.Open("outPutFile.txt")
defer source.Close()
if err != nil {
return
}
destination, err := os.OpenFile("outPutFile1.txt", os.O_WRONLY|os.O_CREATE, 0644)
defer destination.Close()
if err != nil {
return
}
io.Copy(destination, source)
}

浙公网安备 33010602011771号