往标准输出设备写内容
fmt.Println()
从标准输入设备读取内容
fmt.Scan()
import (
"os"
"fmt"
)
//标准设备 os.Stdout 默认为打开状态
fmt.Println("sss")
var a int
fmt.Println("请输入a:")
fmt.Scan(&a)
fmt.Println(a)
//往标准设备里写内容
s.Stdout.WriteString("0000")
//关闭标准设备
os.Stdout.Close()
//运行结果
sss
请输入a:
7
7
0000
//如果先关闭标准设备
//运行结果为空
func Create(name string) (*File, error)
func Sprintf(format string, a ...interface{}) string
func (f *File) Close() error
//打开并新建文件
file, err := os.Create("./yuan.go")
if err != nil {
fmt.Println("err = ", err)
return
}
//使用完毕,关闭文件
defer file.Close()
//往文件中写内容
var buf string
for i := 0; i < 10; i++ {
//"i = i\n",这个字符串储存在buf中
buf = fmt.Sprintf("i = %d\n", i)
n, err := file.WriteString(buf)
if err != nil {
fmt.Println("err = ", err)
}
fmt.Println(n)
}
//运行结果
//新建了一个文件
yuan.go
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
func Open(name string) (*File, error)
func (f *File) Read(b []byte) (n int, err error)
//打开文件
file,err := os.Open("./yuan.go")
if err != nil {
fmt.Println("err = ",err)
return
}
//关闭文件
defer file.Close()
//读取文件内容
buf := make([]byte,1024*2) //2k大小
//n表示从文件读取内容的长度,buf为切片类型
n,err1 := file.Read(buf)
//文件出错同时没有到结尾
if err1 != nil && err != io.EOF{
fmt.Println("err = ",err)
return
}
//buf为切片,要转化为字符串string()
fmt.Printf("buf =%s ",string(buf[:n]))
func NewReader(rd io.Reader) *Reader
func (b *Reader) ReadBytes(delim byte) ([]byte, error)
//打开文件
file,err := os.Open("./yuan.go")
if err != nil {
fmt.Println("err = ",err)
return
}
//关闭文件
defer file.Close()
//新建一个缓冲区,把内容先放在缓冲区
r := bufio.NewReader(file)
//重复循环
for {
//遇到'\n'结束读取,但是'\n'也能读进去
buf,err := r.ReadBytes('\n') //此处要用单引号
if err != nil{
if err == io.EOF{
//文件已经结束,结束循环,结束读取
break
}
fmt.Println("err = ",err)
}
fmt.Printf("buf = ##%s##\n",string(buf))
}