file_util.go
1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package webutility
import (
"bytes"
"io"
"io/ioutil"
"os"
"strings"
)
// ReadFileContent ...
func ReadFileContent(path string) ([]byte, error) {
f, err := os.Open(path)
if err != nil {
return nil, err
}
defer f.Close()
buf := &bytes.Buffer{}
if _, err = io.Copy(buf, f); err != nil {
return nil, err
}
return buf.Bytes(), nil
}
// ReadFileLines ...
func ReadFileLines(path string) ([]string, error) {
f, err := os.Open(path)
if err != nil {
return nil, err
}
defer f.Close()
var s strings.Builder
if _, err = io.Copy(&s, f); err != nil {
return nil, err
}
lines := strings.Split(s.String(), "\n")
for i := range lines {
lines[i] = strings.TrimRight(lines[i], "\r\n")
}
return lines, nil
}
// LinesToFile ...
func LinesToFile(path string, lines []string) error {
content := ""
for _, l := range lines {
content += l + "\n"
}
return ioutil.WriteFile(path, []byte(content), 0644) // drw-r--r--
}
// InsertLine ...
func InsertLine(lines *[]string, pos int64, l string) {
tail := append([]string{l}, (*lines)[pos:]...)
*lines = append((*lines)[:pos], tail...)
}
func WriteFile(path string, content []byte) error {
return ioutil.WriteFile(path, content, 0644) // drw-r--r--
}
func ListDir(path string) (fnames []string, err error) {
finfo, err := ioutil.ReadDir(path)
if err != nil {
return nil, err
}
for _, f := range finfo {
fnames = append(fnames, f.Name())
}
return fnames, nil
}
func WorkingDir() string {
dir, _ := os.Getwd()
return dir
}