ioutil包
除了io包可以讀寫數據,go還提供了一個輔助的工具包就是ioutil。
import "io/ioutil"
該包的介紹只有一句話:Package ioutil implements some I/O utility functions.
ioutil包的方法
// Discard 是一個io.Writer 接口,調用它的Write方法將不做任何事情
// 並且始終成功返回
var Discard io.Writer = devNull(0)
// ReadAll讀取r中的所有數據,返回讀取的數據和遇到的錯誤
// 如果讀取成功,則err返回nil,而不是EOF,因為ReadAll定義為讀取
// 所有數據,所以不會把EOF當作錯誤處理
func ReadAll(r io.Reader) ([]byte, error)
// ReadFile讀取文件中的所有數據,返回讀取的數據和遇到的錯誤
// 如果讀取成功,則err返回nil,而不是EOF
func ReadFile(filename string) ([]byte, error)
// WriteFile向文件中寫入數據,寫入前會清空文件。
// 如果文件不存在,則會以指定的權限創建文件
// 返回遇到的錯誤
func WriteFile(filename string, data []byte, perm os.FileMode) error
// ReadDir 讀取指定目錄中的所有目錄和文件(不包括子目錄)
// 返回讀取到文件信息列表和遇到錯誤,列表是經過排序的。
func ReadDir(dirname string) ([]os.FileInfo, error)
// NopCloser 將r包裝成一個ReadCloser類型,但Close方法不做任何事情
func NopCloser(r io.Reader) io.ReadCloser
// TempFile在dir目錄中創建一個以prefix為前綴的臨時文件,並將其以讀寫模式打開。返回創建的文件對象和遇到的錯誤
// 如果dir為空,則在默認的臨時目錄中創建文件(參加os.TempDir),多次調用會創建不通的臨時文件,調用者可以通過f.Name()獲取文件的完整路徑
// 調用本函數所創建的臨時文件,應該由調用者字節刪除
func TempFile(dir, prefix string) (f *os.File, err error)
// TempDir功能通TempFile,只不過創建的是目錄,返回目錄的完整路徑
func TempDir(dir, prefix string) (name string, err error)
示例
package main
import (
"io/ioutil"
"fmt"
"os"
)
func main() {
//1.讀取文件中的所有數據
fileName1 := "/Users/ruby/Documents/pro/a/aa.txt"
data, err := ioutil.ReadFile(fileName1)
fmt.Println(err)
fmt.Println(string(data))
//2.寫出數據
fileName2 := "/Users/ruby/Documents/pro/a/bbb.txt"
s1 := "hello world"
err := ioutil.WriteFile(fileName2, []byte(s1), 0777)
fmt.Println(err)
// 3.讀取所有數據
s2 := "qwertyuiop"
r1 := strings.NewReader(s2)
data, _ := ioutil.ReadAll(r1)
fmt.Println(data)
// 4.讀取一個目錄下子內容:子文件和子目錄,但是僅有一層
dirName := "/Users/ruby/Documents/pro/a"
fileInfos, _ := ioutil.ReadDir(dirName)
fmt.Println(len(fileInfos))
for
}