LoginSignup
4

More than 5 years have passed since last update.

Golangのファイル入出力関係パッケージまとめ

Last updated at Posted at 2016-11-29

はじめに

Golangのファイル入出力について、各インターフェース、構造体を俯瞰するために一度整理しました。俯瞰できればちゃんと整理されてるみたいですね。

クラス図(のようなもの)

※クラス図はあんまり分かっていないので、誤りあったらごめんなさい。(つっこみください)

ダウンロード (4).png

ioパッケージ

Reader/Writerのinterfaceを定義。 また、File以外の対象に対してのReader/Writer(struct)が定義されている。

  • type Reader interface

    • Read(p []byte) (n int, err error)
  • type Writer interface

    • Write(p []byte) (n int, err error)

osパッケージ

File構造体を定義。 File構造体はio.Readerおよびio.Writerを実装している。

  • type File struct
    • func (f *File) Read(b []byte) (n int, err error)
    • func (f *File) Write(b []byte) (n int, err error)

bufioパッケージ

バッファを用いたReader/Writerを定義。Newメソッドにより、 他のio.Reader/io.Writerを元に生成する。

  • type Reader struct

    • func NewReader(rd io.Reader) *Reader
    • func (b *Reader) Read(p []byte) (n int, err error)
    • func (b *Reader) ReadByte() (byte, error)
    • func (b *Reader) ReadBytes(delim byte) ([]byte, error)
    • func (b *Reader) ReadLine() (line []byte, isPrefix bool, err error)
    • func (b *Reader) ReadRune() (r rune, size int, err error)
    • func (b *Reader) ReadSlice(delim byte) (line []byte, err error)
    • func (b *Reader) ReadString(delim byte) (string, error)
  • type Writer struct

    • func NewWriter(w io.Writer) *Writer
    • func (b *Writer) Write(p []byte) (nn int, err error)
    • func (b *Writer) WriteByte(c byte) error
    • func (b *Writer) WriteRune(r rune) (size int, err error)
    • func (b *Writer) WriteString(s string) (int, error)
    • func (b *Writer) Flush() error
  • type Scanner struct

    • func NewScanner(r io.Reader) *Scanner
    • func (s *Scanner) Scan() bool
    • func (s *Scanner) Text() string

ioutilパッケージ

ファイルごと読み込み/書き込みなど一括処理を簡単に実施するためのutils。 Reader/Writerの存在も隠蔽されていたりする。

  • func ReadAll(r io.Reader) ([]byte error)
  • func ReadFile(filename string) ([]byte, error)
  • func WriteFile(filename string, data []byte, perm os.FileMode) error

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4