知识点 ioutil

package os_ioutilimport (   "fmt"   "io/ioutil"   "os"   "strings")func main() {   //获取当前登陆用户   //u, _ := user.Current()   //fmt.Println(u.Name)   //fmt.Println(u.Uid)   //fmt.Println(u.Gid)   //fmt.Println(u.Username)   //fmt.Println(u.HomeDir)   /*//建立文件夹   //os.Mkdir()中的路径必须是父目录必须存在,且若是文件夹存在则也报错   _ := os.Mkdir("D:/a/b", os.ModeDir)   //os.MkdirAll()功能很强大   _ := os.MkdirAll("D:/a/c", os.ModeDir)   */   //建立文件   //若是文件已存在则建立新的覆盖原来的   //f, err := os.Create("D:/b/test.txt") //文件的上一级目录必须存在   //if err != nil {   // fmt.Println("文件建立失败")   //}   //fmt.Println(f.Name())   //重命名文件或删除文件夹   //err := os.Rename("D:/b/test.txt", "D:/b/a.txt")   //if err != nil {   // fmt.Println("重命名文件失败")   //}   //获取文件(文件夹)信息   //f, _ := os.Open("D:/b/a.txt")   //defer f.Close()   //fileinfo, _ := f.Stat()   //fmt.Println(fileinfo.Name())    //文件名称   //fmt.Println(fileinfo.IsDir())   //是不是文件夹   //fmt.Println(fileinfo.Mode())    //文件权限   //fmt.Println(fileinfo.ModTime()) //文件的修改时间   //fmt.Println(fileinfo.Size())    //文件的大小   //删除文件后删除文件夹   //_ = os.Remove("D:/b/c.txt")//通常不用,删除的必须是文件或空文件夹且必须存在   //_ = os.RemoveAll("D:/a")//只要文件夹存在就删除   //输入流和输出流,相对于程序来讲的,下面是输入流   //第一种字符串的   r := strings.NewReader("hello  World")   b := make([]byte, r.Size())   n, _ := r.Read(b)   fmt.Println("读取数据长度为", n)   fmt.Println("读取内容为", string(b))   //第二种文件形式的   f, _ := os.Open("D:/b/a.txt")   fileinfo, _ := f.Stat()   b = make([]byte, fileinfo.Size())   _, _ = f.Read(b)   fmt.Println(string(b))   //open()与openFile()的区别   //open()这是一个只读打开模式,实际上就是 os.OpenFile() 的快捷操做,它的原型以下:   //func Open(name string) (file *File, err error) {   // // return OpenFile(name, O_RDONLY, 0)   // //}   //func OpenFile(name string, flag int, perm FileMode) (file *File, err error)   //这个复杂点,须要提供文件路径、打开模式、文件权限   //O_RDONLY:只读模式(read-only)   //O_WRONLY:只写模式(write-only)   //O_RDWR:读写模式(read-write)   //O_APPEND:追加模式(append)   //O_CREATE:文件不存在就建立(create a new file if none exists.)   //O_EXCL:与 O_CREATE 一块儿用,构成一个新建文件的功能,它要求文件必须不存在(used with O_CREATE, file must not exist)   //O_SYNC:同步方式打开,即不使用缓存,直接写入硬盘   //O_TRUNC:打开并清空文件   //文件权限(unix权限位):只有在建立文件时才须要,不须要建立文件能够设置为 0。os库虽然提供常量,可是我通常直接写数字,如0664   //下面是输出流,输出流就不能用open()了,由于open只是读取数据并不修改,若要修改则必须用openFile   //func (self *Log) WriteLogFile(log string) {   // logFile, err := os.OpenFile("../log/log_"+time.Now().Format("2006-01-02")+".txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)   // if err != nil {   //    fmt.Println("open log file failed!!!")   //    return   // }   // logFile.WriteString(time.Now().Format("2006-01-02 15:04:05.000") + " " + log)   // logFile.Close()   //}   filePath := "D:/a.txt"   f, err := os.OpenFile(filePath, os.O_APPEND, 0777) //能够将将第二个参数加上os.O_CREAT   if err != nil {      f, _ = os.Create(filePath)   }   defer f.Close()   f.Write([]byte("ashdkasdkaskda")) //也能够直接用writestring()(封装了write方法)   //第三个参数表示文件权限,如:0666   //第一个0(0000)表示这个数是八进制   //第二个6(0110)表示文件全部者有读写权限,但没有执行权限   //第三个6(0110)表示文件拥有着同组用户有读写权限,但没有执行权限   //第三个6(0110)表示其余用户有读写权限,但没有执行权限   //7(0111)最高权限表示可读可写可执行   //4(0100) 可读不可写不能被执行   //ioutil包,含有如下函数ioutil.ReadAll()-->和os.open()结合(只有先打开才能读取),也能够用更简单的ioutil.Readfile(path)   //ioutil.WriteFile(path,[]byte(""sjhdajkshdkj),0664)//具备局限性,其实是先清空再写进去   //ioutil。ReadDir(path) //读取文件夹的内容   fi, _ := ioutil.ReadDir(filepath)   for _, v := range fi {      fmt.Println(v.Name())   }}
相关文章
相关标签/搜索