common.go 898 字节
Newer Older
1 2 3 4 5 6
//
// gopsutil is a port of psutil(http://pythonhosted.org/psutil/).
// This covers these architectures.
//  - linux
//  - freebsd
//  - window
7
package gopsutil
W
WAKAYAMA Shirou 已提交
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

import (
	"bufio"
	"os"
	"strings"
)

// Read contents from file and split by new line.
func ReadLines(filename string) ([]string, error) {
	f, err := os.Open(filename)
	if err != nil {
		return []string{""}, err
	}
	defer f.Close()

	ret := make([]string, 0)

	r := bufio.NewReader(f)
	line, err := r.ReadString('\n')
	for err == nil {
		ret = append(ret, strings.Trim(line, "\n"))
		line, err = r.ReadString('\n')
	}

	return ret, err
}
S
Shirou WAKAYAMA 已提交
34

W
go fmt  
WAKAYAMA shirou 已提交
35
func byteToString(orig []byte) string {
S
Shirou WAKAYAMA 已提交
36
	n := -1
W
WAKAYAMA shirou 已提交
37 38 39 40 41 42 43 44 45 46
	l := -1
	for i, b := range orig{
		// skip left side null
		if l == -1 && b == 0{
			continue
		}
		if l == -1{
			l = i
		}

S
Shirou WAKAYAMA 已提交
47 48 49 50 51
		if b == 0 {
			break
		}
		n = i + 1
	}
W
go fmt  
WAKAYAMA shirou 已提交
52
	if n == -1 {
S
Shirou WAKAYAMA 已提交
53
		return string(orig)
W
go fmt  
WAKAYAMA shirou 已提交
54
	} else {
W
WAKAYAMA shirou 已提交
55
		return string(orig[l:n])
S
Shirou WAKAYAMA 已提交
56 57
	}
}