go标准库-Os+io+bufio+ioutil
go语言中文网有很多文档缺少内容比如string.Builder就没有,godoc绝对详尽,推荐阅读godoc
os
常量
|
|
变量
|
|
函数
- func Exit(code int):让当前程序以给出的状态码code退出。
- func Getuid() int:返回调用者的用户ID。
- func Getwd() (dir string, err error):Getwd返回一个对应当前工作目录的根路径。如果当前目录可以经过多条路径抵达(因为硬链接),Getwd会返回其中一个。
- func Chdir(dir string) error:Chdir将当前工作目录修改为dir指定的目录。
type FileInfo interface
方法
|
|
函数
- func Stat(name string) (fi FileInfo, err error):Stat返回一个描述name指定的文件对象的FileInfo。对于符号连接会自动跳转,出错返回PathError
- func Lstat(name string) (fi FileInfo, err error):和Stat一样但是不跳转
type File struct
函数
-
func Create(name string) (file *File, err error):采用模式0666(任何人都可读写,不可执行)创建一个名为name的文件,如果文件已存在会截断它(为空文件)
-
func Open(name string) (file *File, err error):Open打开一个文件用于读取,底层也是调用OpenFile。
-
func OpenFile(name string, flag int, perm FileMode) (file *File, err error):指定的选项(如O_RDONLY等)、指定的模式(如0666等)打开指定名称的文件,模式参数用于创建不存在的文件时指定其模式,对于读取和写入可以直接传入0
-
func NewFile(fd uintptr, name string) *File
-
func Mkdir(name string, perm FileMode) error:使用指定的权限和名称创建一个目录
-
func Rename(oldpath, newpath string) error:修改一个文件的名字,移动一个文件
方法
- func (f *File) Read(b []byte) (n int, err error):ReadAt从指定的位置(相对于文件开始位置)读取len(b)字节数据并写入b。到达文件结尾,返回值err会是io.EOF。
- func (f *File) Write(b []byte) (n int, err error):Write向文件中写入len(b)字节数据。
- func (f *File) WriteString(s string) (ret int, err error):写入字符串
- func (f *File) Seek(offset int64, whence int) (ret int64, err error):设置下一次读/写的位置。offset为相对偏移量,而whence决定相对位置:0为相对文件开头,1为相对当前位置,2为相对文件结尾。它返回新的偏移量(相对开头)和可能的错误。
- func (f *File) Close() error:关闭文件,通常与defer一起使用
type Process struct
Process保管一个被StarProcess创建的进程的信息。
变量
|
|
函数
- func FindProcess(pid int) (p *Process, err error):根据进程id查找一个运行中的进程。
- func (p *Process) Signal(sig Signal) error:向进程发送一个信号。
- func (p *Process) Kill() error:让进程立刻退出
- func (p *Process) Wait() (*ProcessState, error):阻塞执行主进程直到该参数进程退出
user
user包允许通过名称或ID查询用户帐户
函数
- func Current() (*User, error):返回当前的用户帐户
- func Lookup(username string) (*User, error):根据用户名查询用户
- func LookupId(uid string) (*User, error):根据用户ID查询用户
type User struct
|
|
type UnknownUserError string
当找不到用户时,Lookup会返回UnknownUserError
方法
- func (e UnknownUserError) Error() string
type UnknownUserIdError int
当找不到用户时,LookupId会返回UnknownUserIdError
方法
- func (e UnknownUserIdError) Error() string
exec
exec包执行外部命令。它包装了os.StartProcess函数以便更容易的修正输入和输出,使用管道连接I/O,以及作其它的一些调整
变量
- var ErrNotFound = errors.New(“executable file not found in $PATH”)
函数
- func LookPath(file string) (string, error):在环境变量PATH指定的目录中搜索可执行文件,如file中有斜杠,则只在当前目录搜索。返回完整路径或者相对于当前目录的一个相对路径
- func Command(name string, arg …string) Cmd:函数返回一个Cmd,用于使用给出的参数执行name指定的程序。返回值只设定了Path和Args两个参数。如果name不含路径分隔符,将使用LookPath获取完整路径
type Error struct
|
|
Error类型记录执行失败的程序名和失败的原因
方法
- func (e *Error) Error() string
type ExitError struct
|
|
ExitError报告某个命令的一次未成功的返回
方法
- func (e *ExitError) Error() string
type Cmd struct
|
|
Cmd代表一个正在准备或者在执行中的外部命令
方法
- func (c *Cmd) StdinPipe() (io.WriteCloser, error):StdinPipe方法返回一个在命令Start后与命令标准输入关联的管道
- func (c *Cmd) StdoutPipe() (io.ReadCloser, error):StdoutPipe方法返回一个在命令Start后与命令标准输出关联的管道
- func (c *Cmd) StderrPipe() (io.ReadCloser, error):StderrPipe方法返回一个在命令Start后与命令标准错误输出关联的管道
- func (c Cmd) Run() error:Run执行c包含的命令,并阻塞直到完成。如果命令成功执行,stdin、stdout、stderr的转交没有问题,并且返回状态码为0,方法的返回值为nil;如果命令没有执行或者执行失败,会返回ExitError类型的错误;否则返回的error可能是表示I/O问题
- func (c *Cmd) Start() error:Start开始执行c包含的命令,但并不会等待该命令完成即返回。Wait方法会返回命令的返回状态码并在命令返回后释放相关的资源
- func (c *Cmd) Wait() error:Wait会阻塞直到该命令执行完成,该命令必须是被Start方法开始执行的。Wait方法会在命令返回后释放相关的资源
- func (c *Cmd) Output() ([]byte, error):执行命令并返回标准输出的切片
- func (c *Cmd) CombinedOutput() ([]byte, error):执行命令并返回标准输出和错误输出合并的切片
signal
signal包实现了对输入信号的访问
函数
- func Notify(c chan<- os.Signal, sig …os.Signal):将输入信号转发到c,c至少缓存1,可以使用对一个chan执行多次Notify
- func Stop(c chan<- os.Signal):停止向c发送信号,取消c上所有Notify的效果
io
io包提供了对I/O原语的基本接口。本包的基本任务是包装这些原语已有的实现(如os包里的原语),使之成为共享的公共接口,这些公共接口抽象出了泛用的函数并附加了一些相关的原语的操作。
变量
|
|
函数
- func Copy(dst Writer, src Reader) (written int64, err error):将src的数据拷贝到dst,直到在src上到达EOF或发生错误
- func CopyN(dst Writer, src Reader, n int64) (written int64, err error):从src拷贝n个字节数据到dst,直到在src上到达EOF或发生错误
io/ioutil
函数
- func ReadAll(r io.Reader) ([]byte, error):从r读取数据直到EOF或遇到error
bufio
bufio包实现了有缓冲的I/O。它包装一个io.Reader或io.Writer接口对象,创建另一个也实现了该接口,且同时还提供了缓冲和一些文本I/O的帮助函数的对象
常量
|
|
type Reader struct
函数
- func NewReader(rd io.Reader) Reader:创建一个具有默认大小缓冲、从r读取的Reader
- func NewReaderSize(rd io.Reader, size int) Reader:创建一个具有最少有size尺寸的缓冲、从r读取的Reader。如果参数r已经是一个具有足够大缓冲的* Reader类型值,会返回r
方法
- func (b *Reader) Reset(r io.Reader):丢弃缓冲中的数据,清除任何错误,将b重设为其下层从r读取数据
- func (b *Reader) Buffered() int:返回缓冲中现有的可读取的字节数
- func (b *Reader) Peek(n int) ([]byte, error):返回输入流的下n个字节,而不会移动读取位置
- func (b *Reader) Read(p []byte) (n int, err error):读取数据写入p
- func (b *Reader) ReadByte() (c byte, err error):读取并返回一个字节
- func (b *Reader) ReadRune() (r rune, size int, err error):读取一个utf-8编码的unicode码值,返回该码值、其编码长度和可能的错误
- func (b *Reader) ReadLine() (line []byte, isPrefix bool, err error):这个函数容易出错,使用ReadBytes(’\n’)或ReadString(’\n’)代替,或者使用Scanner
- func (b *Reader) ReadBytes(delim byte) (line []byte, err error):ReadBytes读取直到第一次遇到delim字节,返回一个包含已读取的数据和delim字节的切片
- func (b *Reader) ReadString(delim byte) (line string, err error):ReadString读取直到第一次遇到delim字节,返回一个包含已读取的数据和delim字节的字符串
type Writer struct
内容基本与Reader一一对应
函数
- func NewWriter(w io.Writer) Writer:创建一个具有默认大小缓冲、写入w的Writer。
- func NewWriterSize(w io.Writer, size int) Writer:创建一个具有最少有size尺寸的缓冲、写入w的Writer。如果参数w已经是一个具有足够大缓冲的*Writer类型值,会返回w。
方法
- func (b *Writer) Reset(w io.Writer):丢弃缓冲中的数据,清除任何错误,将b重设为将其输出写入w。
- func (b *Writer) Buffered() int:返回缓冲中已使用的字节数
- func (b *Writer) Available() int:返回缓冲中还有多少字节未使用
- func (b *Writer) Write(p []byte) (nn int, err error):将p的内容写入缓冲
- func (b *Writer) WriteString(s string) (int, error):写入一个字符串。
- func (b *Writer) WriteByte(c byte) error:写入单个字节
- func (b *Writer) WriteRune(r rune) (size int, err error):写入一个unicode码值(的utf-8编码),返回写入的字节数和可能的错误
- func (b *Writer) Flush() error:将缓冲中的数据写入下层的io.Writer接口
type ReadWriter struct
变量
|
|
所以其实没有必要使用这个,直接弄一个Reader和Writer就行了
type Scanner struct
推荐使用Reader
重定向输入输出
CSDN Golang重定向fmt.Scanf从文件而不是os.Stdin读取
直接给os.Stdin赋值新的file对象,记得备份原来的Stdin
|
|