2016-11-03 12 views
0

ファイル内の最後の行を読み込む方法が見つかりましたが、ファイルの最後の行が空で、次の行を読む必要があり、わかりませんどのようにそれを行うには、少し助けてください。ファイルから最後の行を取得

func ll(z string) string { 

    f, err := os.Open(z) 
    if err != nil { 
     log.Fatal(err) 
    } 
    bf := bufio.NewReader(f) 
    for { 
     switch line, err := bf.ReadString('\n'); err { 
     case nil: 
     // valid line, echo it. note that line contains trailing \n. 
     fmt.Println(line) 

     case io.EOF: 
      if line > "" { 
       // last line of file missing \n, but still valid 
        fmt.Println(line, "in func") 
      } 
      return line 
     default: 
      log.Fatal(err) 
     } 
    } 
} 
+0

を使用すると、スライスに、各ラインを投げた後、印刷することができます[LEN(スライス)-2] – nosequeldeebee

答えて

2

あなたが最後のものに遭遇したとき、あなたはprev_lineを返すことができるようにするだけ、現在の行ごとに反復を保存:

func next_to_last(z string) string { 
    f, err := os.Open(z) 
    if err != nil { 
     log.Fatal(err) 
    } 
    bf := bufio.NewReader(f) 
    prev_line := "" 

    for { 
     switch line, err := bf.ReadString('\n'); err { 

     case nil: 
     // valid line, echo it. note that line contains trailing \n. 
     fmt.Println(line) 
     prev_line = line // Save line as previous 

     case io.EOF: 
      if line > "" { 
       // last line of file missing \n, but still valid 
        fmt.Println(line, "in func") 
      } 
      return prev_line // Return previous line 

     default: 
      log.Fatal(err) 
     } 
    } 
} 
関連する問題