Golang之IO操作初接触
fmt包的使用
import (
"fmt"
"os"
)
//打印且换行
fmt.Println("hello")
//打印不换行
fmt.Print("hello")
fmt.Println()
//格式化打印
fmt.Printf("%v\n", "hello")
// 返回格式化后内容
str := fmt.Sprintf("float %f", 3.14159)
fmt.Println(str)
// 输出到io.writer
fmt.Fprintln(os.Stdout, "A\n")
基本io接口
import (
"fmt"
"io"
"strings"
)
func sampleReadFromString() {
// 建立一个reader,该reader实现了io.Reader接口
bytes, _ := ReadFrom(strings.NewReader("from string"), 8)
fmt.Println(string(bytes))
}
func sampleReadStdin() {
// 从屏幕读取
fmt.Println("please input from stdin: ")
bytes, _ := ReadFrom(os.Stdin, 11)
fmt.Println(string(bytes))
}
func sampleReadFile() {
file, _ := os.Open("main.go")
defer file.Close()
bytes, _ := ReadFrom(file, 9)
fmt.Println(string(bytes))
}
func ReadFrom(reader io.Reader, num int) ([]byte, error) {
// 建立[]byte切片
p := make([]byte, num)
// 将数据读取到p
n, err := reader.Read(p)
// 读取到的内容长度大于0
if n > 0 {
return p[:n], nil
}
return p, err
}
缓存IO
func main() {
reader := strings.NewReader("hello world")
bufReader := bufio.NewReader(reader)
// peek返回缓存的一个切片,只读不取
bytes, _ := bufReader.Peek(8)
fmt.Println(string(bytes))
// 返回buffer中的字符数
fmt.Println(bufReader.Buffered())
// 读取缓冲,截止到某个byte切割符为止,读取后,buffer的字符数会变少
//单引号''代表byte
str, _ := bufReader.ReadString(' ')
fmt.Println(str, bufReader.Buffered())
// 建立buffer writer
w := bufio.NewWriter(os.Stdout)
// 向buffer writer写入数据
fmt.Fprint(w, "Hello ")
fmt.Fprint(w, "world")
//将缓存写入writer
w.Flush()
}
计算文件行数
func main () {
if len(os.Args) < 2 {
return
}
filename := os.Args[1]
file, err := os.Open(filename)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
reader := bufio.NewReader(file)
var line int
for {
_, isPrefix, err := reader.ReadLine()
if err != nil {
break
}
if !isPrefix {
line++
}
}
fmt.Println(line)
}
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦