GO IO(2)

2393 ワード

OSを使用したファイルの読み書き
ファイルを開く
func Open(name string) (*File, error)

この方法では、ファイルパスオープンモードファイル権限を指定する必要があります.
func OpenFile(name string, flag int, perm FileMode) (*File, error)

ファイルを読む
ファイルオブジェクトのReadメソッド
//           b   ,                。                            。
//         ,     0,io.EOF
func (f *File) Read(b []byte) (n int, err error)

例:
func main() {
    dir,err:=filepath.Abs("")
    checkErr(err)
    pwd:=dir+"/main"

    f,err:=os.Open(pwd+"/io.txt")
    defer f.Close()
    checkErr(err)

    bs:=make([]byte,1024)
    _,err=f.Read(bs)
    checkErr(err)
    fmt.Println(string(bs))
}

bufioパッケージはキャッシュを実現し、ioをパッケージした.Readerとio.Writerオブジェクト、別のReaderオブジェクトとWriterオブジェクトを作成
func (b *Reader) Read(p []byte) (n int, err error)

例:
func main() {
    dir,err:=filepath.Abs("")
    checkErr(err)
    pwd:=dir+"/main"

    f,err:=os.Open(pwd+"/io.txt")
    defer f.Close()
    checkErr(err)

    bs:=make([]byte,1024)
    bufReader:=bufio.NewReader(f)

    _,err=bufReader.Read(bs)
    checkErr(err)
    fmt.Println(string(bs))
}

ファイルを書く
ファイルオブジェクトのWriteメソッド
//     b       f ,            。 n   len(b) ,      err
func (f *File) Write(b []byte) (n int, err error)

例:
func main() {
    dir,err:=filepath.Abs("")
    checkErr(err)
    pwd:=dir+"/main"

    //  OpenFile         
    f,err:=os.OpenFile(pwd+"/io.txt",os.O_RDWR|os.O_APPEND,0644)
    defer f.Close()
    checkErr(err)

    bs:=[]byte("file write test")
    _,err=f.Write(bs)
    checkErr(err)
}

bufioパッケージはキャッシュを実現し、ioをパッケージした.Readerとio.Writerオブジェクト、別のReaderオブジェクトとWriterオブジェクトを作成
func (b *Writer) Write(p []byte) (nn int, err error)

例:
func main() {
    dir,err:=filepath.Abs("")
    checkErr(err)
    pwd:=dir+"/main"

    //  OpenFile         
    f,err:=os.OpenFile(pwd+"/io.txt",os.O_RDWR|os.O_APPEND,0644)
    defer f.Close()
    checkErr(err)

    bs:=[]byte("file write test")
    bufWriter:=bufio.NewWriter(f)
    _,err=bufWriter.Write(bs)
    checkErr(err)
    //  write     Flush  
    bufWriter.Flush()
}