读写文件

读取用户输入
fmt.Scanln(&num,&str)//从控制台读取用户输入
scanf,第一个参数是一个读取格式。
input := "12 , 1 , 21"
format := "%d , %s , %d"

var name string
var sex int
var age int
fmt.Sscanf(input,format,&sex,&name,&age)
//Sscanf,从字符串中根据固定格式读取数据,注意不同数据之间一定要用空格分割开

使用bufio包提供的缓冲来读取。
inputReader = bufio.NewReader(os.Stdin)//创建一个读取器与标准输入绑定
input, err = inputReader.ReadString(' '),//以 为分割符来读取一段字符串

NewReader(),函数的参数是一个io.Reader接口的任意对象,返回一个新的带缓冲的io.Reader.
从实参的reader指定的读取器中读取。

返回的读取器提供一个ReaderString(delim byte)的方法,该方法从文件中读取内容,直到碰到delim指定的字符,然后将内容以及delim一起放入缓冲区。
如果读取的过程中发生错误返回nil,如果一直读取到文件结束,则返回读取到的字符串和io.EOF,
如果没有碰到delim,则返回错误err!=nil.

标准输出是os.StdoutStderr用来显示错误信息。
out :=bufio.NewWriter(os.Stdout)
out.WriteString("hashdfhashdfhasdf")
out.Flush()


文件读写:

在Go语言中,使用os.File类型的指针指向文件。(也叫做文件句柄)
os.Stdin、os.Stdout他们的类型都是*os.File(os.Stdin实现了Read()方法,所以也实现了io.Reader接口)
读取文件,
inputFile,inputError := os.Open("input.dat"),返回一个io.Reader类型的对象
defer inputFile.Close() //结束之后关闭连接
inputReader := bufio.NewReader(inputFile)
然后就开始读读操作。

将整个文件读到一个字符串里:
io/ioutil包下的ioutil.ReadFile()方法。返回一个[]byte类似了WriteFile()可以将[]byte的值写入文件。
inputfile := "D:\迅雷下载\XH市首富.HD1280高清国语中字版.mp4"
outputfile := "D:\迅雷下载\ZC.mp4"
filestring,_ :=ioutil.ReadFile(inputfile)
ioutil.WriteFile(outputfile,filestring,0644)

Read()读取一个字节
n,err := Read(buf)//读取一个缓冲数组那么大。n是读回来的长度。
数据在buf中。

从文件中直接读取到对应的变量中,使用fmt.Fscanln(file,&v1,&v2&v3)

path包里有一个子包filepath,提供了跨平台处理文件名和路径的函数。

compress包:读取压缩文件
f1,err := os.Open(fName)
fz, err := gzip.NewReader(f1)
r = bufio.NewReader(fz)

写文件:
outputFile,err := os.OpenFile("output.dat",os.O_WRONLY|os.O_CREATE,0666)
outputWrite := bufio.NewWriter(outputFile)
outputWrite.WriteString(string)
outputWrite.Flush()

os.O_RDONLY只读
os.O_WRONLY只写
os.O_CREATE如果文件不存在,就创建
os.O_TRUNC如果指定文件已存在,就将文件长度截为0

原文地址:https://www.cnblogs.com/mcmx/p/11380585.html