func main() { //絕對路徑 fileInfo , err := os.Stat("E:/a.txt") fileInfo , err = os.Stat("E:/") if err !=nil { fmt.Println("err:" , err.Error()) } else { fmt.Printf("%T \n" , fileInfo) fmt.Printf("%v \n" , fileInfo) //文件名 fmt.Println(fileInfo.Name()) //是不是目錄 fmt.Println(fileInfo.IsDir()) //文件尺寸大小 fmt.Println(fileInfo.Size()) //mode 權限 fmt.Println(fileInfo.Mode()) //文件最後修改時間 fmt.Println(fileInfo.ModTime()) } }
文件路徑:數組
(1)、判斷是不是絕對路徑filepath.IsAbs()
(2)、獲取相對路徑filepath.Rel()
(3)、獲取絕對路徑filepath.Abs()
(4)、拼接路徑path.Join()app
文件操做:
1.建立文件夾,若是文件夾存在,建立失敗ide
2.建立文件:若是文件存在,會覆蓋區塊鏈
3.打開文件:spa
4.關閉文件:指針
5.刪除:code
package main import ( "os" "fmt" ) func main() { /* 文件操做: 1.建立文件夾,若是文件夾存在,建立失敗 os.MKdir() os.MKdirAll() 2.建立文件:若是文件存在,會覆蓋 os.Create()-->*file 3.打開文件: os.Open(filename) os.OpenFile(filename,mode,perm) 4.關閉文件: file.Close() 5.刪除: os.Remove() os.RemoveAll() */ // 一、建立目錄 fileName1 := "./test1" err := os.Mkdir(fileName1, os.ModePerm) if err != nil { fmt.Println("err:", err.Error()) } else { fmt.Printf("%s 目錄建立成功!\n", fileName1) } fileName2 := "./test2/abc/xyz" err = os.MkdirAll(fileName2, os.ModePerm) if err != nil { fmt.Println("err:", err.Error()) } else { fmt.Printf("%s 目錄建立成功!\n", fileName2) } //二、建立文件.若是文件已經存在,則文件被覆蓋 fileName3 := "./test1/abc.txt" file1, err := os.Create(fileName3) if err != nil { fmt.Println("err:", err.Error()) } else { fmt.Printf("%s 建立成功!%v \n", fileName3, file1) } // 三、打開文件 file2, err := os.Open(fileName3) if err != nil { fmt.Println("err:", err.Error()) } else { fmt.Printf("%s 打開成功!%v \n", fileName3, file2) } /* 第一個參數:文件名稱 第二個參數:文件的打開方式 O_RDONLY:只讀模式(read-only) O_WRONLY:只寫模式(write-only) O_RDWR:讀寫模式(read-write) O_APPEND:追加模式(append) O_CREATE:文件不存在就建立(create a new file if none exists.) 第三個參數:文件的權限:文件不存在建立文件,須要指定權限 */ fileName4 := "./test1/abc2.txt" file4, err := os.OpenFile(fileName4, os.O_RDWR|os.O_CREATE, os.ModePerm) if err != nil { fmt.Println("err:", err.Error()) } else { fmt.Printf("%s 打開成功!%v \n", fileName4, file4) } //四、關閉文件,程序與文件的聯繫斷開 file4.Close() // 五、刪除文件和目錄 fileName5 := "./test1" err = os.Remove(fileName5) if err != nil { fmt.Println(err) } else { fmt.Printf("%s 刪除成功!" , fileName5) } err = os.RemoveAll(fileName5) if err != nil { fmt.Println(err) } else { fmt.Printf("%s 刪除成功!" , fileName5) } }
文件讀寫 對象
/** 2.讀取文件file.Read([]byte)-->n,err 從文件中開始讀取數據,存入到byte切片中,返回值n是本次實際讀取的數據量若是讀取到文件末尾,n爲0,err爲EOF:end of file */ func readFile(fileName string){ file2,err:=os.OpenFile(fileName, os.O_RDWR|os.O_CREATE, os.ModePerm) if err!=nil{ fmt.Println(file2); }else { bs:=make([]byte,8,1024*8); n:= -1; str:=""; for{ n,err=file2.Read(bs); fmt.Printf("n:%v \n",n) if n==0||err==io.EOF{ fmt.Println("read file end") break; } str= strings.Join([]string{str,string(bs[:n])},"") } fmt.Println(str) } //三、關閉文件 file2.Close() } func writeFile(fileName string){ str:="I Love China 我愛中國"; bs:=[]byte(str); file2,err:=os.OpenFile(fileName, os.O_RDWR|os.O_CREATE, os.ModePerm) if err!=nil{ fmt.Println(file2); }else { file2.Write(bs); } file2.Close(); }
/*
ioutil包:
ReadFile() //讀取文件中的全部的數據,返回讀取的字節數組
WriteFile() //向指定文件寫入數據,若是文件不存在,則建立文件,寫入數據以前清空文件
ReadDir() //讀取一個目錄下的子內容:子文件和子目錄,可是僅有一層
TempDir() //在當前目錄下,建立一個以指定字符串爲前綴的臨時文件夾,並返回文件夾路徑
TempFile() //在當前目錄下,建立一個以指定字符串爲前綴的文件,並以讀寫模式打開文件,並返回os.File指針對象
*/blog
package main import ( "io/ioutil" "fmt" "os" ) func main() { /* ioutil包: ReadFile() //讀取文件中的全部的數據,返回讀取的字節數組 WriteFile() //向指定文件寫入數據,若是文件不存在,則建立文件,寫入數據以前清空文件 ReadDir() //讀取一個目錄下的子內容:子文件和子目錄,可是僅有一層 TempDir() //在當前目錄下,建立一個以指定字符串爲前綴的臨時文件夾,並返回文件夾路徑 TempFile() //在當前目錄下,建立一個以指定字符串爲前綴的文件,並以讀寫模式打開文件,並返回os.File指針對象 */ //一、ReadFile() //讀取文件中的全部的數據,返回讀取的字節數組 fileName1 := "./files/blockchain.txt" data, err := ioutil.ReadFile(fileName1) if err != nil { fmt.Println("文件打開異常", err.Error()) } else { fmt.Println(string(data)) } //二、WriteFile() //向指定文件寫入數據,若是文件不存在,則建立文件,寫入數據以前清空文件 fileName2 := "./files/xyz.txt" s1 := "Steven陪你學區塊鏈" err = ioutil.WriteFile(fileName2, []byte(s1), 0777) if err != nil { fmt.Println("寫入文件異常", err.Error()) } else { fmt.Println("文件寫入OK!") } //三、文件拷貝 err = ioutil.WriteFile(fileName2 , data , os.ModePerm) if err != nil { fmt.Println("文件拷貝異常", err.Error()) } else { fmt.Println("文件拷貝成功!") } //四、ReadDir() //讀取一個目錄下的子內容:子文件和子目錄,可是僅有一層 dirName := "./" fileInfos , err := ioutil.ReadDir(dirName) if err != nil { fmt.Println("目錄遍歷異常", err.Error()) } else { for i , v := range fileInfos { fmt.Println(i , v.Name() , v.IsDir() , v.Size() , v.ModTime()) } } //五、TempDir() //在當前目錄下,建立一個以指定字符串爲前綴的臨時文件夾,並返回文件夾路徑 filename , err := ioutil.TempDir("./" , "temp") if err != nil { fmt.Println("建立目錄失敗" , err.Error()) } else { fmt.Println(filename) } //六、TempFile() //在當前目錄下,建立一個以指定字符串爲前綴的文件,並以讀寫模式打開文件,並返回os.File指針對象 file1 , err := ioutil.TempFile(filename , "temp") if err != nil { fmt.Println("建立文件失敗" , err.Error()) } else { file1.WriteString("寫入內容:" + file1.Name()) } file1.Close() }