美文网首页
文件操作

文件操作

作者: Carrism | 来源:发表于2019-01-05 14:44 被阅读3次

    文件操作

    目录操作

    文件操作的大多数函数都是在os包里面,下面列举几个目录操作:

    • func Mkdir(name string,perm FileMode) error: 创建名称为name的目录,权限设置是perm,例如0777
    • func MkdirAll(path string,perm FileMode)error:根据Path创建多级目录,例如shen/test1/test2
    • func Remove(name string) error:删除名称为name的目录,当目录下有文件或者其他目录是会出错的
    • func RemoveAll(path string)error:根据path删除多级子目录,如果path是单个名称,那么该目录下的子目录全部删除
    func main() {
    //在当前工程文件下创建目录
        os.Mkdir("demo1",0777)
        os.MkdirAll("demo1/test1/test2",0777)
    
        err := os.Remove("mytest")
        if err != nil {
            fmt.Println(err)
        }
        os.RemoveAll("demo1/test1/test2")
    }
    

    文件操作

    • 建立与打开文件

      1. 新建文件可以通过如下两个方法
        • func Create(name string)(file *File,err error):根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666文件,可读可写
        • func NewFile(fd uintptr,name string) *File:根据文件描述符创建相应的文件,返回一个文件对象
      2. 通过下面两个方法来打开文件
        • func Open(name string)(file *File,err Error):该方法打开一个名称为name的文件,但是是只读方式,内部实现其实调用了OpenFile
        • func OpenFile(name string,flag int,perm uint32)():打开名称为name的文件,flag是打开方式,只读或读写等,perm是权限
    • 写文件

      1. func (file *File)Write(b []byte)(n int,err Error):写入byte类型的信息到文件中
      2. func (file *File)WriteAt(b []byte,off int64)(n int,err Error):在指定位置开始写入byte类型的信息
      3. func (file *File)WriteString(s string) (ret int,err Error):写入string 信息到文件
    • 读文件

      1. func (file *File)Read(b []byte)(n int,err Error):读取数据到b中
      2. func (file *File)ReadAt(b []byte,off int64)(n int,err Error) :从off开始读取数据到b中
    func main() {
        userFile := "demo1/test.txt"
        file,_ := os.Create(userFile)
    
        for i := 0;i < 10 ;i++  {
            index,_ := file.WriteString("hello world\n")
            file.Write([]byte("just a test\n"))
            fmt.Println("index = ",index)
        }
    
    
        file1,_ := os.OpenFile(userFile,os.O_RDWR,0666)
        defer file1.Close()
        b := make([]byte,1024)
    
        file1.Read(b)
        sourceStr := string(b)
        strArray := strings.Split(sourceStr,"\n")
        strArray = strArray[:len(strArray)-1]
        var desStr string
        for _,temp := range strArray{
            if len(temp) > 0 {
                temp = strings.Join([]string{temp,"2222\n"},"")
                fmt.Printf("temp = %s\n",temp)
                desStr = strings.Join([]string{desStr,temp},"")
            }
        }
        n,err := file1.WriteAt([]byte(desStr),0)
        //n,err := file1.WriteString(desStr)
        if err != nil {
            fmt.Println("写入有误")
        }
        fmt.Printf("n = %d\n",n)
    //删除文件
        //os.Remove(userFile)
    
    }
    
    

    相关文章

      网友评论

          本文标题:文件操作

          本文链接:https://www.haomeiwen.com/subject/gtgrrqtx.html