文件操作
目录操作
文件操作的大多数函数都是在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")
}
文件操作
-
建立与打开文件
- 新建文件可以通过如下两个方法
- func Create(name string)(file *File,err error):根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666文件,可读可写
- func NewFile(fd uintptr,name string) *File:根据文件描述符创建相应的文件,返回一个文件对象
- 通过下面两个方法来打开文件
- func Open(name string)(file *File,err Error):该方法打开一个名称为name的文件,但是是只读方式,内部实现其实调用了OpenFile
- func OpenFile(name string,flag int,perm uint32)():打开名称为name的文件,flag是打开方式,只读或读写等,perm是权限
- 新建文件可以通过如下两个方法
-
写文件
- func (file *File)Write(b []byte)(n int,err Error):写入byte类型的信息到文件中
- func (file *File)WriteAt(b []byte,off int64)(n int,err Error):在指定位置开始写入byte类型的信息
- func (file *File)WriteString(s string) (ret int,err Error):写入string 信息到文件
-
读文件
- func (file *File)Read(b []byte)(n int,err Error):读取数据到b中
- 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)
}
网友评论