2
返回切片类型
ReadFile读取指定文件并返回的内容 。成功调用返回错= = nil,不是错= = EOF。因为ReadFile读取整个文件,它不治疗的EOF解读为一个错误报告。
os.Stdout.Write(data)
2)Stdout打开的文件,标准输出文件描述符
1 Stdin、2 Stdout和3 Stderr是打开的文件,指向1标准输入、2标准输出和3标准错误 文件描述符。
请注意,Go运行时会为死机和崩溃写入标准错误;关闭Stderr可能会导致这些消息转到其他地方,可能会转到稍后打开的文件。
3)Write() 传入参数是一个切片和ReadFile互相使用
注意是从data写入"testdata/hello文件中
Write将len(b)个字节从b写入文件。它返回写入的字节数和一个错误(如果有的话)。当n!=时,写入返回非零错误len(b)。
相关练习:
package main
import (
"log"
"os"
)
func main() {
//也可以这样
// file := "D:/text.txt"
// data, err := os.ReadFile(file)
//这里是看官网的,因为老师的版本是19年发布的,现在23,所以和filedemo02中有很大的不同
//中文版的标准库无os.ReadFile,官网才有
//func ReadFile(name string) ([]byte, error)
//在filedemo04中也能用,但要注意是在os.O_RDWR能读又能写的情况下
data, err := os.ReadFile("D:/text.txt")
if err != nil {
log.Fatal(err) //进化版fmt.Println("Open file err=", err)
}
//这里能直接输出全部的三行内容,即使最后一行末尾没换行(回车)也照样能输出
//filedemo02就不行而且还复杂,所以计算机得不断学习
os.Stdout.Write(data) //想用这个方法得用到切片,
//[]byteas []byte value in argument to os.Stdout.Write
/*filedemo02进化版,
for {
str, err := reader.ReadString('\n') //注意是单引号,关键 读到一个换行就结束
if err == io.EOF { // io.EOF表示文件的末尾
break
}
//关键 读到一个换行就结束,
//所以在text.txt文件中的最后一行的末尾在给他一个回车表示换行了,否则最后一行的内容不输出
//输出内容(三行全在)
fmt.Print(str)
}
*/
}
3:判断文件是否存在
os.Stat()
os.IsNotExist()旧方法--新方法得用errors.Is()
4.遍历os.Args切片,就可以得到所有的命令行输入参数值
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("命令行的参数有", len(os.Args))
//遍历os.Args切片,就可以得到所有的命令行输入参数值
for i, v := range os.Args {
fmt.Printf("args[%v]=%v\n", i, v)
}
}
//在cmd命令行中输入这些,写完一个就回车。
//一开始没换行,已经go build了一个test.exe所以删掉再重来就好,还是不行就多试几次
//go build -o test.exe main.go
//除了第一个参数(以后版本可能会改先不管他),后面的可以乱设,无影响记得空格
//test.exe tom D:/aaa/bbb/init.log 909
/*cmd中结果,直接在vscode上不行
命令行的参数有 4
args[0]=test.exe
args[1]=tom
args[2]=D:/aaa/bbb/init.log
args[3]=909
*/