os
- 传入参数
argvs := os.Args
t := argvs[1]
w := argvs[2]
s := argvs[3]
传入的参数需要做判断,go中没有像py一样的三元运算,所以需要一一判断
if t == "" {
t = "10"
}
if w == "" {
w = "200"
}
if s == "" {
s = "32"
}
然后参数就可以使用了
import "os"
关闭标准输出后,fmt打印无法生效,
正常使用fmt.scan,会使用用户数据的数据,当os.Stdin.Close()后,用户输入scan失效,默认空值为0.
-
写入
package main
import (
"fmt"
"os"
)
func WriteFile(path string) {
//打开文件,新建文件
f, err := os.Create(path)
if err != nil {
//等于空。说明出错
fmt.Println("err", err)
return
}
defer f.Close()
var buf string
for i := 0; i < 10; i++ {
buf = fmt.Sprintf("i = %d\n", i)
fmt.Println("buf", buf)
n, err := f.WriteString(buf)
if err != nil {
fmt.Println("err", err)
}
fmt.Println("n = ", n)
}
}
func main() {
path := "./first_fo_file.tx"
WriteFile(path)
}
buf = fmt.Sprintf("i = %d\n", i) Sprintf函数将格式化的字符串存到缓存中,并返回,f就可以使用WriteString函数将返回的缓存数据写入到文件中。
缓存区buf是一个切片,可以定义接受的大小,使用f.Read(buf)得到的是读到的内容长度,和一个错误返回值,
io.EOF意味着文件读到了结尾,已经读完了
string(buf[:n]) 从0开始读到文件结尾,string将切片转换成字符串
按照行来读
import bufio
可以看到在读取到的内容中,也把文件每行的换行符\n读取到了,使得printf中没有设置换行也执行了换行。
拷贝文件实例
package main
import (
"io"
"os"
"fmt"
)
func main() {
list := os.Args
// 获取命令行参数
if len(list) != 3{
fmt.Println("useage: xxx srcfile dstfile")
return
}
srcfilename := list[1]
dstfilename := list[2]
if srcfilename == dstfilename{
fmt.Println("源文件不能与目标文件重名")
}
sf,err1 := os.Open(srcfilename)
if err1 != nil{
fmt.Println("err1:" ,err1)
return
}
//新建目的文件
df,err2 := os.Create(dstfilename)
if err2 != nil{
fmt.Println("err2: ",err2)
return
}
//操作完毕关闭文件
defer sf.Close()
defer df.Close()
//从源文件读,写入目标文件,读多少写多少
buf := make([]byte, 4*1024)
for{
n,err := sf.Read(buf)
if err != nil{
if err == io.EOF{
break; //跳出循环的条件,读到文件结尾
}
fmt.Println("err",err)
}
//写入目的文件,读多少写多少
df.Write(buf[:n])
}
}
os.Chmod(sting,filemod)
更改文件权限,
os.Stat(filaname)
文件状态
os.IsNotExist()
判断文件是否存在
/**
* 判断文件是否存在 存在返回 true 不存在返回false
*/
func checkFileIsExist(filename string) bool {
var exist = true
if _, err := os.Stat(filename); os.IsNotExist(err) {
exist = false
}
return exist
}
os.Hostname()
返回的是主机名跟一个错误接口
package main
import (
"fmt"
"os"
)
func main() {
host, err := os.Hostname()
if err != nil {
fmt.Printf("%s", err)
} else {
fmt.Printf("%s", host)
}
}