从文件一次性读取全部数据
// 从文件读取数据
func ReadFile() {
file, err := os.Open("src/go_xuexi_190121/day07/e2_bufio/main/test.txt")
if err != nil {
fmt.Println("open file failed, error: ", err)
return
}
defer file.Close()
str, err := ioutil.ReadAll(file)
if err != nil {
fmt.Println("error: ", err)
return
}
fmt.Println("文件内容:", string(str))
}
直接读取文件全部内容
// 直接读取文件内容
func ZhiRead() {
str, err := ioutil.ReadFile("src/go_xuexi_190121/day07/e2_bufio/main/test.txt")
if err != nil {
fmt.Println("read file failed, error: ", err)
return
}
fmt.Printf("文件内容: %s", string(str))
}
逐行读取文件内容
// 利用Bufio读取文件, 这种方法是逐行读取文件内容。
func BufReadFile() {
file, err := os.Open("D:\\Goproject\\src\\go_xuexi_190121\\day07_文件操作_命令行参数\\e2_bufio\\main\\test.txt")
if err != nil {
if err == io.EOF {
fmt.Println("read file completed.")
return
} else {
fmt.Println("open file failed, error: ", err)
return
}
}
defer file.Close()
reader := bufio.NewReader(file) // 传入文件句柄
// 必须循环,否则只读取一行数据
for {
str, err := reader.ReadString('\n') // 此方法的本质是调用 reader.ReadBytes() 方法,然后将字节数组转换成字符串:string(bytes)
if err != nil {
if err == io.EOF {
fmt.Println("read file finished.")
return
} else {
fmt.Println("read file failed, error: ", err)
return
}
}
fmt.Printf("%s", str)
fmt.Println("#*****************************************************************#" )
}
}
从标准输入读取数据
// 从标准输入读取数据
func ReadStdin() {
reader := bufio.NewReader(os.Stdin)
str, err := reader.ReadString('\n')
if err != nil {
fmt.Println("error: ", err)
}
fmt.Printf(">>> %s\n", str)
}
网友评论