【GO】文件讀寫:打開關閉+打開模式+文件權限+文件讀取

咔咔博客之文件打開與關閉

案例

文件的操做使用os包
在這裏插入圖片描述linux

package main

import (
	"fmt"
	"os"
	"time"
)

func main() { 
	file, e := os.Open("D:/kaka.txt")
	if e != nil { 
		fmt.Println("文件打開失敗")
	} else { 
		fmt.Println("文件打開成功")
	}

	defer func() { 
		file.Close()
		fmt.Println("文件已關閉")
	}()
	fmt.Println("愉快滴欣賞avi藝術")
	time.Sleep(3 * time.Second)
}

注意點

在os.open時,若是你的操做系統時windows這個時候不要打開文件直接複製文件路徑,會報一個文件目錄的錯誤windows

The filename, directory name, or volume label syntax is incorrect.微信

在打開文件的路徑必須本身手動輸入,由於編碼有問題編碼

打開文件也必須關閉文件,因此在任什麼時候候打開一個文件操做後使用延遲執行的defer來進行關閉文件url

defer是延遲執行的關鍵詞,在全部程序都執行完纔會執行的代碼spa

文件打開模式

  • O_RDONLY int = syscall.O_RDONLY // 只讀模式
  • O_WRONLY int = syscall.O_WRONLY // 只寫模式
  • O_RDWR int = syscall.O_RDWR // 讀寫模式
  • O_APPEND int = syscall.O_APPEND //追加模式
  • O_CREATE int = syscall.O_CREAT // 建立模式,若是文件不存在的話
  • O_TRUNC int = syscall.O_TRUNC // 覆蓋模式

文件權限

權限詳解有什麼問題能夠看這篇文章,詳細的說明了權限的問題。
這裏簡單的說一下 r w x 分別表明的是什麼意思
r表示可讀
w表示可寫
x表示可執行操作系統

任何文件都有使用者,羣組,other的概念。 權限所表明的是r = 4 w = 2 x = 1 這塊的知識是在linux寫過的,就不在繼續討論了。.net

文件讀取

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

func main() { 
	file, e := os.OpenFile("D:/kaka.txt", os.O_RDONLY, 0666)
	if e != nil { 
		fmt.Println("文件打開失敗:err", e)
		return
	} else { 
		fmt.Println("文件打開成功")
	}

	// 打開時馬上掛起關閉程序
	defer func() { 
		file.Close()
		fmt.Println("文件關閉成功")
	}()

	// 建立文件的讀取器
	reader := bufio.NewReader(file)
	// 死循環讀取
	for { 
		// 以換行符爲界,分批次讀取數據,獲得readString
		readString, e := reader.ReadString('\n')
		if e != nil { 
			fmt.Println("文件讀取失敗;err", e)
			// 若是已到文件末尾,則直接結束
			if e == io.EOF { 
				break
			}
		}
		fmt.Print(readString)
	}
	fmt.Println("讀取結束")
}

簡易的數據讀取

在這裏插入圖片描述

func main() { 
	bytes, err := ioutil.ReadFile("d:/kaka.txt")
	if err != nil { 
		fmt.Println("讀取失敗,err=", err)
		return
	} else { 
		contentStr := string(bytes)
		fmt.Println(contentStr)
	}
}

博主微信歡迎交流

在這裏插入圖片描述

相關文章
相關標籤/搜索