|
- package fileutils
-
- import (
- "bufio"
- "fmt"
- "os"
- "strings"
- )
-
- // Exists returns whether or not the given file exists
- func Exists(p string) bool {
- if _, err := os.Stat(p); err == nil {
- return true
- }
- return false
- }
-
- // WriteData writes data to the given path, creating the file if necessary.
- func WriteData(path string, data []byte) {
- f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0600)
- if err != nil {
- fmt.Println(err)
- }
- // TODO: check for Close() errors
- // https://github.com/ncw/swift/blob/master/swift.go#L170
- defer f.Close()
-
- _, err = f.Write(data)
- if err != nil {
- fmt.Println(err)
- }
- }
-
- // ReadData returns file data as an array of lines from the file.
- func ReadData(p string) *[]string {
- f, err := os.Open(p)
- if err != nil {
- return nil
- }
- defer f.Close()
-
- lines := []string{}
-
- scanner := bufio.NewScanner(f)
- for scanner.Scan() {
- lines = append(lines, scanner.Text())
- }
-
- if err := scanner.Err(); err != nil {
- return nil
- }
-
- return &lines
- }
-
- // RemoveLine searches for the line that starts with the given value and,
- // if found, removes it and saves the updated file.
- func RemoveLine(p, startsWith string) {
- f, err := os.Open(p)
- if err != nil {
- return
- }
- defer f.Close()
-
- var outText string
- found := false
-
- scanner := bufio.NewScanner(f)
- for scanner.Scan() {
- if strings.HasPrefix(scanner.Text(), startsWith) {
- found = true
- } else {
- outText += scanner.Text() + string('\n')
- }
- }
-
- if err := scanner.Err(); err != nil {
- return
- }
-
- if found {
- WriteData(p, []byte(outText))
- }
- }
-
- // FindLine searches the given file for a line that begins with the given
- // string.
- func FindLine(p, startsWith string) string {
- f, err := os.Open(p)
- if err != nil {
- return ""
- }
- defer f.Close()
-
- scanner := bufio.NewScanner(f)
- for scanner.Scan() {
- if strings.HasPrefix(scanner.Text(), startsWith) {
- return scanner.Text()
- }
- }
-
- if err := scanner.Err(); err != nil {
- return ""
- }
-
- return ""
- }
|