Newer
Older
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
import (
"archive/zip"
"io"
"io/ioutil"
"os"
"path/filepath"
"strings"
)
var searchResult []string
var searchFileName string
// ReadFile reads contents from provided file path
func ReadFile(filePath string) ([]byte, error) {
return ioutil.ReadFile(filePath)
}
//CreateFile creates a new file
func CreateFile(filePath string) (*os.File, error) {
return os.Create(filePath)
}
// WriteFile writes provided bytes to file
func WriteFile(filePath string, data []byte) error {
return ioutil.WriteFile(filePath, data, 0644)
}
//AppendFile appends prvided data/text to file
func AppendFile(filename string, text string) (int, error) {
f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0600)
if err != nil {
return 0, err
}
defer f.Close()
return f.WriteString(text)
}
//DeleteFile deletes provided file path
func DeleteFile(filePath string) error {
return os.Remove(filePath)
}
// RenameFile renames/moves file from old path to new path
func RenameFile(oldFilePath, newFilePath string) error {
return os.Rename(oldFilePath, newFilePath)
}
// CreateDirectory creates directory using provided path
func CreateDirectory(directoryPath string) error {
return os.Mkdir(directoryPath, 0777)
}
// DeleteDirectory creates directory using provided path
func DeleteDirectory(directoryPath string) error {
return os.RemoveAll(directoryPath)
}
//ListDirectory returns list of all available components of directory
func ListDirectory(directoryPath string) ([]os.FileInfo, error) {
return ioutil.ReadDir(directoryPath)
}
//Zip Zip
func Zip(source, target string) error {
source = filepath.Clean(source)
target = filepath.Clean(target)
zipfile, err := os.Create(target)
if err != nil {
return err
}
defer zipfile.Close()
archive := zip.NewWriter(zipfile)
defer archive.Close()
info, err := os.Stat(source)
if err != nil {
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
}
var baseDir string
if info.IsDir() {
baseDir = filepath.Base(source)
}
filepath.Walk(source, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
header, err := zip.FileInfoHeader(info)
if err != nil {
return err
}
if baseDir != "" {
header.Name = filepath.Join(baseDir, strings.TrimPrefix(path, source))
}
if info.IsDir() {
header.Name += "/"
} else {
header.Method = zip.Deflate
}
writer, err := archive.CreateHeader(header)
if err != nil {
return err
}
if info.IsDir() {
return nil
}
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(writer, file)
return err
})
return err
}
//Unzip Unzip
func Unzip(archive, target string) error {
reader, err := zip.OpenReader(archive)
if err != nil {
return err
}
return err
}
for _, file := range reader.File {
path := filepath.Join(target, file.Name)
if file.FileInfo().IsDir() {
os.MkdirAll(path, file.Mode())
continue
}
fileReader, err := file.Open()
if err != nil {
return err
}
defer fileReader.Close()
targetFile, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, file.Mode())
if err != nil {
return err
}
defer targetFile.Close()
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
return err
}
}
return nil
}
//MoveDirectory MoveDirectory
func MoveDirectory(source, destination string) error {
return os.Rename(source, destination)
}
//MoveFile MoveFile
func MoveFile(source, destination string) error {
return os.Rename(source, destination)
}
//CopyFile CopyFile
func CopyFile(source, destination string) error {
// return os.Rename(source, destination)
data, err := ioutil.ReadFile(source)
if err != nil {
return err
}
err = ioutil.WriteFile(destination, data, 0644)
return err
}
//ReplaceFile ReplaceFile
func ReplaceFile(data []byte, destination string) error {
err := ioutil.WriteFile(destination, data, 0644)
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
return err
}
//TruncateFile TruncateFile
func TruncateFile(path string, size int64) error {
return os.Truncate(path, size)
}
//SeekFile SeekFile
// func SeekFile(path string, offset int64) error {
// file, err := os.OpenFile(path, os.O_RDWR, 0600)
// if err != nil {
// return err
// }
// defer file.Close()
// _, err = file.Seek(offset, 0)
// return err
// }
//FileInfo FileInfo
func FileInfo(path string) (os.FileInfo, error) {
return os.Stat(path)
}
//FileSearch FileSearch
func FileSearch(fileName, path string) ([]string, error) {
searchFileName = fileName
searchDirectory, err := os.Open(path)
if err != nil {
return searchResult, err
}
defer searchDirectory.Close()
testFileInfo, _ := searchDirectory.Stat()
if !testFileInfo.IsDir() {
return searchResult, err
}
err = filepath.Walk(path, findFile)
if err != nil {
return searchResult, err
}
return searchResult, nil
}
func findFile(path string, fileInfo os.FileInfo, err error) error {
if err != nil {
return err
}
// get absolute path of the folder that we are searching
absolute, err := filepath.Abs(path)
if err != nil {
return err
}
if fileInfo.IsDir() {
testDir, err := os.Open(absolute)
if err != nil {
return err
}
testDir.Close()
return nil
}
matched, err := filepath.Match(searchFileName, fileInfo.Name())
if err != nil {
return err
}
if matched {
add := absolute
searchResult = append(searchResult, add)
}
return nil
}