外部读写
操作终端相关的文件句柄常量
- 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) }