file, _ := os.Open("x.txt")
f := bufio.NewReader(file)
for {
read_line, _ := ReadString('\n')
fmt.Print(read_line)
// other code what work with parsed line...
}
end it add \n on every line , end program to work , only work with last line...
Please put example, i try anything end any solution what i find here not work for me.
You can slice off the last character:
read_line = read_line[:len(read_line)-1]
Perhaps a better approach is to use the strings library:
read_line = strings.TrimSuffix(read_line, "\n")
If you want to read a file line-by-line, using bufio.Scanner
will be easier. Scanner won't includes endline
(\n
or \r\n
) into the line.
file, err := os.Open("yourfile.txt")
if err != nil {
//handle error
return
}
defer file.Close()
s := bufio.NewScanner(file)
for s.Scan() {
read_line := s.Text()
// other code what work with parsed line...
}
If you want to remove endline
, I suggest you to use TrimRightFunc
, i.e.
read_line = strings.TrimRightFunc(read_line, func(c rune) bool {
//In windows newline is \r\n
return c == '\r' || c == '\n'
})
Update:
As pointed by @GwynethLlewelyn, using TrimRight
will be simpler (cleaner), i.e.
read_line = strings.TrimRight(read_line, "\r\n")
Internally, TrimRight
function call TrimRightFunc
, and will remove the character if it match any character given as the second argument of TrimRight
.