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 }