当前位置: 首页 > 编程笔记 >

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

南宫龙野
2023-03-14
本文向大家介绍Golang的os标准库中常用函数的整理介绍,包括了Golang的os标准库中常用函数的整理介绍的使用技巧和注意事项,需要的朋友参考一下

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")   }  } }


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("两个文件不一样") }


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 }


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) }


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 }


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 }


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 }


这个函数的原理其实是这样的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()) }


这个就是上边的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() }


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()) }


os.Fd()返回文件的句柄,函数原型是func (file *File) Fd() uintptr函数是这样的uintptr(file.fd) 返回的是文件的句柄,句柄是什么?句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数

import (

 "fmt"

 "os"

)

func main() {  f, _ := os.Open("1.go")  fmt.Println(f.Fd()) //我的平台句柄是228 }


os.Pipe()这个函数获取的函数的读写指针,函数原型func Pipe() (r *File, w *File, err error)

import (

 "fmt"

 "os"

)

func main() {  r, w, _ := os.Pipe()  fmt.Println(r, w) //&{0xc08402e120} &{0xc08402e180} }


os.NewFile()函数原型是func NewFile(fd uintptr, name string) *File 第一个传入的是句柄,然后是文件名称,这个函数并不是真的创建了一个文件,是新建一个文件不保存,然后返回文件的指针

import (

 "fmt"

 "os"

)

func main() {  f, _ := os.Open("ini.go")  defer f.Close()  f1 := os.NewFile(f.Fd(), "ceshi.go") //输如ini.go的句柄  defer f1.Close()  fd, _ := f1.Stat()  fmt.Println(fd.ModTime()) //返回的是ini.go的创建时间2013-11-27 09:11:50.2793737 +0800 CST

}


(f *File).Chdir()修改工作目录,函数原型func (f *File) Chdir() error,这个时候f必须是目录了,但是吧这个不支持windows

import (

 "fmt"

 "os"

)

func main() {  dir, _ := os.Getwd()  fmt.Println(dir)  f, _ := os.Open("views")  err := f.Chdir()  if err != nil {   fmt.Println(err)  }  dir1, _ := os.Getwd()  fmt.Println(dir1) }

 类似资料:
  • 需要提前导入的库: numpy import numpy as np 绘图 import matplotlib.pyplot as plt 数据集 from sklearn import datasets 各种机器学习库: kNN算法 from sklearn.neighbors import KNeighborsClassifier 线性回归 from sklearn.linear_model

  • 好了,本书到这里也接近完结了。相信你一在学习了这么多内容的之后,一定跃跃欲试了吧? 下面,我们将以代码为主,讲解几个利用std库,即标准库来做的例子。希望大家能从中学到一点写法,并开始自己的Rust之旅。 注: 由于笔者的电脑是openSUSE Linux的,所以本章所有代码均只在 openSUSE Leap 42.1 && rustc 1.9.0-nightly (52e0bda64 2016-

  • 这个模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行。一个例子就是使用os.sep可以取代操作系统特定的路径分割符。 下面列出了一些在os模块中比较有用的部分。它们中的大多数都简单明了。 os.name字符串指示你正在使用的平台。比如对于Windows,它是'

  • 问题内容: 我注意到linux和Windows之间的区别。strcmpi在Windows C标准库实现中,但不在GNU C标准库实现中。ISO标准的C标准库中的函数strcmpi是否已定义?如何获得标准文件?谢谢。 问题答案: POSIX标准(又名UNIX)具有但不属于C99 / ISO-C。 注意:如果将上述参考与例如参考进行比较,您会注意到后者明确引用了ISO-C,而前者则没有。OpenGro

  • 本文向大家介绍Python的math模块中的常用数学函数整理,包括了Python的math模块中的常用数学函数整理的使用技巧和注意事项,需要的朋友参考一下 在数学之中,除了加减乘除四则运算之外——这是小学数学——还有其它更多的运算,比如乘方、开方、对数运算等等,要实现这些运算,需要用到 Python 中的一个模块:Math 模块(module)是 Python 中非常重要的东西,你可以把它理解为

  • 目录表 简介 sys模块 命令行参数 更多sys的内容 os模块 概括 简介 Python标准库是随Python附带安装的,它包含大量极其有用的模块。熟悉Python标准库是十分重要的,因为如果你熟悉这些库中的模块,那么你的大多数问题都可以简单快捷地使用它们来解决。 我们已经研究了一些这个库中的常用模块。你可以在Python附带安装的文档的“库参考”一节中了解Python标准库中所有模块的完整内容