• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > Golang的os标准库中常用函数的整理介绍

Golang的os标准库中常用函数的整理介绍

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了golang os.stat,golang os.args,golang os.openfile,golang 标准库,golang 库等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

os.Rename()这个函数的原型是func Rename(oldname, newname string) error,输入的是旧文件名,新文件名,然后返回一个error其实这个函数的真正实现用的syscall.Rename()然后通过MoveFile(from *uint16, to *uint16) (err error) = MoveFileW来重新命名
 import (
 "fmt"
 "os"
)

func main() {
 err := os.Rename("1.go", "2.go")
 if err != nil {
  if os.IsExist(err) { //判断一个是否文件已经存在的错误
   fmt.Println("文件已经存在")
   os.Rename("1.go", "widuu_1.go")
  }
 }
}
</div>
os.SameFile()这个函数的作用是检测文件的信息是否相同所谓文件信息指的是os.Stat(),函数原型是func SameFile(fi1, fi2 FileInfo) bool
举个例子
import (
 "fmt"
 "os"
)

func main() {
 f1, _ := os.Stat("1.go")
 f2, _ := os.Stat("21.go")
 if os.SameFile(f1, f2) {
  fmt.Println("两个文件一样")
  return
 }
 fmt.Println("两个文件不一样")
}
</div>
os.Setenv()这个函数是设置环境变量的很简单,函数原型func Setenv(key, value string) error输入对应的key-value字符串,返回error信息
import (
 "fmt"
 "os"
)

func main() {
 err := os.Setenv("WD_PATH", "D:/golang")
 if err != nil {
  fmt.Println(err)
 }
 env := os.Getenv("WD_PATH")
 fmt.Println(env) //返回的是D:/golang
}
</div>
os.Symlink()对于这个函数我只能说不支持windows平台的,创建软连接func Symlink(oldname, newname string) error
import (
 "fmt"
 "os"
)

func main() {
 err := os.Symlink("1.go", "21.go") //不支持windows平台只支持linux和unix
 fmt.Println(err)
}
</div>
os.TempDir()这个函数很简单,返回你本地的系统temp目录,函数原型func TempDir() string,嘿嘿,做个对比别乱了
import (
 "fmt"
 "io/ioutil"
 "os"
)

func main() {
 //创建临时的tmp
 dir, _ := os.Getwd()
 path, _ := ioutil.TempDir(dir, "tmp")
 fmt.Println(path) //D:\test\tmp764030415
 //这个返回的是系统temp
 temp := os.TempDir()
 fmt.Println(temp) //windows来说C:\Users\ADMINI~1\AppData\Local\Temp
}
</div>
os.Truncate()改变文件的f.Size()这个就改变了文件内容的长度了,函数原型func Truncate(name string, size int64) error,记得哈第二个是int64
import (
 "fmt"
 "os"
)

func main() {
 f, _ := os.Stat("1.go")
 fmt.Println(f.Size())   //1.go 83
 err := os.Truncate("1.go", 10) 
 if err != nil {
  fmt.Println(err)
 }
 f, _ = os.Stat("1.go")
 fmt.Println(f.Size())    //1.go现在是10 文件也变成了package ma
}
</div>
os.Create()这个函数是创见一个文件,函数的原型是func Create(name string) (file *File, err error)输入的是名称字符串类型,返回的是一个File的指针和一个error
import (
 "fmt"
 "os"
 "reflect"
)

func main() {
 f, _ := os.Create("widuu_2.go")
 defer f.Close()
 fmt.Println(reflect.ValueOf(f).Type()) //*os.File
}
</div>
这个函数的原理其实是这样的OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666) O_RDWR也就是说用读写的权限,O_CREATE然后文件存在忽略,不存在创建它,O_TRUNC文件存在截取长度为0,这就解释了为什么我们明明有这个文件,我擦,创建之后哭了~啥都没有了~~用的时候需谨慎,先判断文件是否存在~

os.OpenFile函数的原型是func OpenFile(name string, flag int, perm FileMode) (file *File, err error)要指定文件权限和打开的方式,就是我们上边所用到的
import (
 "fmt"
 "os"
)

func main() {
 f, _ := os.OpenFile("10.go", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)
 defer f.Close()
 fmt.Println(f.Stat())
}
</div>
这个就是上边的Create()只不过权限是0777以及下边的操作等大部分用到OpenFile()

os.Open()这个函数是打开文件使用的,函数原型是func Open(name string) (file *File, err error),返回值就不说了一样的,它的其实原理是这样的OpenFile(name, O_RDONLY, 0)以读文件的模式打开
import (
 "fmt"
 "os"
 "reflect"
)

func main() {
 f, _ := os.Open("1.go")
 defer f.Close()
}
</div>
os.Stat()这个是获取fileinfo的结构描述func Stat(name string) (fi FileInfo, err error)返回了Fileinfo这个结构,我们再前边也详细讲了
,其实它是怎么实现的呢?因为我们没讲syscall所以我们就讲一个,譬如FileInfo底层获取fs := &fileStat{name: basename(name)}然后后边逻辑大家可以看源代码
import (
 "fmt"
 "os"
)

func main() {
 f, _ := os.Stat("1.go")
 fmt.Println(f.Size())
}
</div>
os.Fd()返回文件的句柄,函数原型是func (file *File) Fd() uintptr函数是这样的uintptr(file.fd) 返回的是文件的句柄,句柄是什么?句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数
import (
 "fmt"
 "os"
)

func main() {

您可能想查找下面的文章:

  • Golang的os标准库中常用函数的整理介绍

相关文章

  • Go语言eclipse环境搭建图文教程
  • Golang算法之田忌赛马问题实现方法分析
  • Go语言截取字符串函数用法
  • Go语言结构体定义和使用方法
  • Go语言中的内存布局详解
  • Go语言用map实现堆栈功能的方法
  • Go中map数据类型3点小知识
  • 利用Golang生成整数随机数方法示例
  • Go语言图片处理和生成缩略图的方法
  • go语言接口用法实例分析

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Go语言中的Array、Slice、Map和Set使用详解
    • 举例讲解Go语言中函数的闭包使用
    • go语言操作redis连接池的方法
    • go语言实现文件分割的方法
    • 简单了解Go语言中函数作为值以及函数闭包的使用
    • golang简单tls协议用法完整示例
    • go语言使用RC4加密的方法
    • Go语言服务器开发实现最简单HTTP的GET与POST接口
    • 利用Go语言实现简单Ping过程的方法
    • go语言中range用法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有