41 lines
871 B
Go
41 lines
871 B
Go
package ioutils
|
|
|
|
import (
|
|
"bufio"
|
|
"io"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
func FileExistsWithStats(filename string) (os.FileInfo, bool) {
|
|
stats, err := os.Stat(filename)
|
|
return stats, !os.IsNotExist(err)
|
|
}
|
|
|
|
func FileExists(filename string) bool {
|
|
_, err := os.Stat(filename)
|
|
return !os.IsNotExist(err)
|
|
}
|
|
|
|
func ReadPropertyFile(reader io.Reader) (map[string]string, error) {
|
|
scanner := bufio.NewScanner(reader)
|
|
|
|
props := make(map[string]string)
|
|
for scanner.Scan() {
|
|
line := scanner.Text()
|
|
commentCharIndex := strings.Index(line, "#")
|
|
if commentCharIndex >= 0 {
|
|
line = line[commentCharIndex+1:]
|
|
}
|
|
if equalIndex := strings.Index(line, "="); equalIndex >= 0 {
|
|
key := strings.TrimSpace(line[:equalIndex])
|
|
value := strings.TrimSpace(line[equalIndex+1:])
|
|
props[key] = value
|
|
}
|
|
}
|
|
if err := scanner.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return props, nil
|
|
}
|