处理缓冲的输入和输出
用到的主要包:fmt、os、bufio
1、fmt包读取输入
fmt.Scanln
fmt.Scanln(&firstName, &lastName)
扫描来自标准输入的文本,将空格分隔的值依次存放到后续的参数内,直到碰到换行。
fmt.Scanf
fmt.Scanf("%s %s", &firstName, &lastName)
除了第一个参数用作格式字符串,决定如何读取,其它和Scanln一样
fmt.Sscanf
fmt.Sscanf(input, “%s %s”, &firstName, &lastName)
Sscan以及Sscan开头的都是从字符串读取
从字符串读取,除此之外,与Scanf一样
2.bufio包缓冲读取
将读取器与标准输入绑定
func NewReader(rd io.Reader) *Reader
该函数的实参可以满足任何实现了io.Reader接口的对象,返回一个带缓冲的io.Reader对象,它将从指定读取器读取内容
3.读文件
》文件使用指向os.File类型的指针来表示,也叫文件句柄。例如os.Stdin、os.Stdout
使用bufio来创建文件读取器
》将整个文件的内容读取到一个字符串里,使用io/ioutil包
ioutil.ReadFile()
》带缓冲的读取
切片提供了Go中处理I/O缓冲的标准方式
在很多情况下,文件的内容是不按行划分的,或者干脆就是一个二进制文件,在这种情况下,ReadString()这种函数就无法使用了,
buf := make([]byte, 1024)
...
n, err := inputReader.Read(buf)
if (n == 0) { break}
》按列读取文件中的内容
fmt包的Fscan开头的一些函数
》go中惯用的写法
defer f.Close() 程序结束前关闭文件
4.写文件
fmt.Fprintf()
func Fprintf(w io.Writer, format string, a …interface{}) (n int, err error)
依据指定的格式向第一个参数内写入字符串,第一个参数必须实现了io.Writer接口
Fprintf能够写入任何类型,只要其实现了Write方法,包括os.Stdout,os.File,管道,网络链接,通道等,还有bufio包中的缓冲写入
5.path
包里包含一个子包叫 filepath,这个子包提供了跨平台的函数,用于处理文件名和路径
6.copy文件
使用到io.copy
7.从命令行读取参数
os包中包含一个string类型的切片变量os.Args,用来处理一些基本的命令行参数,在程序启动的时候,读取命令行输入的参数。