相关api

建立和打开文件

新建文件可以通过如下两个方法

func Create(name string) (file *File, err Error)
根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666的文件,返回的文件对象是可读写的

func NewFile(fd uintptr, name string) *File
根据文件描述符创建相应的文件,返回一个文件对象

通过如下的两个方法打开文件

func Open(name string) (file *File, err Error)
该方法打开一个名称为name的文件,但是是只读方式,内部实现其实调用了OpenFile

func OpenFile(name string, flag int, perm uint32) (file *File, err Error)
打开名称为name的文件,flag是打开的方式,只读,读写等,perm是权限

写文件

func (file *File) Write(b []byte) (n int, err Error)
写入byte类型的信息到文件
func (file *File) WriteAt(b []byte, off int64) (n int, err Error)
在指定位置开始写入byte类型的信息

func (file *File) WriteString(s string) (ret int, err Error)
写入string信息到文件

读文件

func (file *File) Read(b []byte) (n int, err Error)
读取数据到b中

func (file *File) ReadAt(b []byte, off int64) (n int, err Error)
从off开始读取数据到b中

删除文件

func Remove(name string) Error
调用该函数就可以删除文件名为name的文件
例子

标准输出设备

func main() {
   //os.Stdout.Close()    //关闭后,无法输出
   fmt.Println("ok?")

   //标准设备文件(os.Stdout)
   os.Stdout.WriteString("are you ok?\n")
   //os.Stdin.Close() //关闭后无法输入
   var a int
   fmt.Println("请输入a: ")
   fmt.Scan(&a)
   fmt.Println("a = ", a)
}

WriteString使用

写文件

func WriteFile(path string) {
   //打开文件,新建文件
   f, err := os.Create(path)
   if err != nil {
      fmt.Println("err = ", err)
      return
   }

   //使用完毕,需要关闭文件
   defer f.Close()
   var buf string
   for i := 0; i < 10; i++ {
      buf = fmt.Sprintf("i = %d\n", i)
      n, err := f.WriteString(buf)
      if err != nil {
         fmt.Println(err)
      }
      fmt.Println(n)
   }
}

func main() {
   path := "./demo.txt"
   WriteFile(path)
}

Read使用

读取

func ReadFile(path string) {
   //打开文件,新建文件
   f, err := os.Open(path)
   if err != nil {
      fmt.Println("err = ", err)
      return
   }

   //使用完毕,需要关闭文件
   defer f.Close()

   buf := make([]byte, 1024*2)    //2k大小
   //n代表从文件读取内容的长度
   n, err := f.Read(buf)
   //文件出错同时不是结尾的时候出错
   if err != nil && err != io.EOF{
      fmt.Println(err)
      return
   }
   //切片取最大
   fmt.Println(string(buf[:n]))
}

func main() {
   path := "./demo.txt"
   ReadFile(path)
}