File tree Expand file tree Collapse file tree 3 files changed +58
-1
lines changed
internal/examples/basic/fileio Expand file tree Collapse file tree 3 files changed +58
-1
lines changed Original file line number Diff line number Diff line change 1111| fileio\_ null\_ writer.go| fileio\_ null\_ writer| ioutil.Discard のサンプルです.|
1212| fileio\_ stdin.go| fileio\_ stdin\_ scanner| os.Stdin と bufio.Scanner のサンプルです.|
1313| fileio\_ permission.go| fileio\_ stat\_ permission| os.FileMode でパーミッションを判定するサンプルです.|
14-
14+ | fileio \_ fs \_ dirfs.go | fileio \_ fs \_ dirfs | os.DirFS() を利用してファイルの読み込みを行うサンプルです. |
Original file line number Diff line number Diff line change @@ -22,4 +22,5 @@ func (r *register) Regist(m mappings.ExampleMapping) {
2222 m ["fileio_null_writer" ] = NullWriter
2323 m ["fileio_stdin_scanner" ] = StdinWithScanner
2424 m ["fileio_stat_permission" ]= StatPermission
25+ m ["fileio_fs_dirfs" ] = FsDirFS
2526}
Original file line number Diff line number Diff line change 1+ package fileio
2+
3+ import (
4+ "io"
5+ "io/fs"
6+ "os"
7+
8+ "github.com/devlights/gomy/output"
9+ )
10+
11+ // FsDirFS は、 os.DirFS() を利用してファイルの読み込みを行うサンプルです.
12+ //
13+ // REFERENCES:
14+ // - https://golang.org/pkg/io/fs/
15+ // - https://golang.org/pkg/os/#DirFS
16+ func FsDirFS () error {
17+ //
18+ // io/fs パッケージは Go1.16で追加されたパッケージ.
19+ // このパッケージの目的はファイルシステムを抽象化するためにある.
20+ //
21+ // 今までの io.Reader や io.Writer が読み書きを抽象化していたのと
22+ // 同様にファイルシステムという概念も抽象化してしまおうという事になる.
23+ //
24+ // osパッケージ側には DirFS という関数が追加され、ここから特定のディレクトリの
25+ // fs.FS を取得することが出来るようになった。
26+ //
27+
28+ //
29+ // 以下は os.Open("./.gitpod.yml") しているのと同じことになる
30+ //
31+ var (
32+ dir fs.FS
33+ file fs.File
34+ buf []byte
35+ err error
36+ )
37+
38+ // DirFSを利用して、特定のディレクトリを指す fs.FS を取得
39+ dir = os .DirFS ("." )
40+ output .Stdoutf ("[DirFS]" , "%[1]v(%[1]T)\n " , dir )
41+
42+ // 対象の fs.FS から、そのディレクトリ内のファイルを開く
43+ file , err = dir .Open (".gitpod.yml" )
44+ if err != nil {
45+ return err
46+ }
47+
48+ buf , err = io .ReadAll (file )
49+ if err != nil {
50+ return nil
51+ }
52+
53+ output .Stdoutl ("[.gitpod.yml]" , string (buf ))
54+
55+ return nil
56+ }
You can’t perform that action at this time.
0 commit comments