golang读取文件,命令行读取,字符串读取

132 阅读1分钟

读取文件

  1. 读取文件到缓存区
    file, err := os.Open("heap.txt")
    if err != nil {
       fmt.Println("打开文件失败:", err)
       return
    }
    defer file.Close()
    // 读取文件内容
    buffer := make([]byte, 10)
    for {
       n, err := file.Read(buffer)
       if err != nil {
          break
       }
       fmt.Print(string(buffer[:n]))
    }
  1. 一次性读取整个文件
    // 读取文件内容
    data, err := os.ReadFile("heap.txt")
    if err != nil {
       fmt.Println("读取文件失败:", err)
       return
    }
    // 打印文件内容
    fmt.Println(string(data))
  1. 逐行读取文件
 // 打开文件
    file, err := os.Open("heap.txt")
    if err != nil {
       fmt.Println("打开文件失败:", err)
       return
    }
    defer file.Close()
    // 逐行读取文件内容
    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
       fmt.Println(scanner.Text())
    }
    if err := scanner.Err(); err != nil {
       fmt.Println("读取文件失败:", err)
       return
    }

命令行读取

scanner := bufio.NewScanner(os.Stdin)
fmt.Print("请输入字符串:")
scanner.Scan()
text := scanner.Text()
fmt.Println("你输入的字符串是:", text)

读取字符串

str := "Hello, World!"
reader := strings.NewReader(str)
buf := make([]byte, len(str))
n, err := reader.Read(buf)
if err != nil && err != io.EOF {
   fmt.Println("读取错误:", err)
   return
}
fmt.Printf("读取 %d 个字节,内容为:%s\n", n, string(buf))