github.com/TrueBlocks/trueblocks-core/src/apps/chifra@v0.0.0-20241022031540-b362680128f7/pkg/file/asciifiles.go (about) 1 // Copyright 2021 The TrueBlocks Authors. All rights reserved. 2 // Use of this source code is governed by a license that can 3 // be found in the LICENSE file. 4 5 package file 6 7 import ( 8 "bufio" 9 "fmt" 10 "io" 11 "os" 12 "strings" 13 14 "github.com/ethereum/go-ethereum/log" 15 ) 16 17 func AsciiFileToLines(filename string) []string { 18 file, err := os.OpenFile(filename, os.O_RDONLY, 0) 19 if err != nil { 20 return []string{} 21 } 22 scanner := bufio.NewScanner(file) 23 scanner.Split(bufio.ScanLines) 24 var ret []string 25 for scanner.Scan() { 26 ret = append(ret, scanner.Text()) 27 } 28 file.Close() 29 return ret 30 } 31 32 func AsciiFileToString(fileName string) string { 33 if !FileExists(fileName) { 34 return "" 35 } 36 37 contents, err := os.ReadFile(fileName) 38 if err != nil { 39 log.Error(fmt.Sprintf("%v", err)) 40 return "" 41 } 42 43 return string(contents) 44 } 45 46 func StringToAsciiFile(filename, value string) error { 47 file, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) 48 if err != nil { 49 return err 50 } 51 defer file.Close() 52 _, err = io.WriteString(file, value) 53 if err != nil { 54 return err 55 } 56 return file.Sync() 57 } 58 59 func AppendToAsciiFile(filename, value string) error { 60 file, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) 61 if err != nil { 62 return err 63 } 64 defer file.Close() 65 if _, err := file.Write([]byte(value)); err != nil { 66 return err 67 } 68 return file.Sync() 69 } 70 71 func LinesToAsciiFile(filename string, value []string) error { 72 file, err := os.OpenFile(filename, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0666) 73 if err != nil { 74 return err 75 } 76 defer file.Close() 77 78 lines := strings.Join(value[:], "\n") + "\n" 79 _, err = io.WriteString(file, lines) 80 if err != nil { 81 return err 82 } 83 84 return file.Sync() 85 }