一、文件读取

1. 将整个文件读取到内存中

package main

import (
"flag"
"fmt"
"io/ioutil"
) func main() {
//从命令行标记参数中获取文件路径
fptr := flag.String("fpath", "test.txt", "the file path to read from")
flag.Parse()
data, err := ioutil.ReadFile(*fptr)
if err != nil {
fmt.Println("File reading error: ", err)
}
fmt.Println(string(data))
}

  

2. 分块读取文件

package main

import (
"bufio"
"flag"
"fmt"
"io"
"log"
"os"
) func main() {
fptr := flag.String("fpath", "test.txt", "the file path to read from")
flag.Parse() f, err := os.Open(*fptr)
if err != nil {
log.Fatal(err)
}
defer func() {
if err := f.Close(); err != nil {
log.Fatal(err)
}
}()
r := bufio.NewReader(f)
b := make([]byte, 10)
for {
_, err := r.Read(b)
if err != nil {
if err == io.EOF {
break
}
log.Fatal(err)
}
fmt.Println(string(b))
}
}

  

3. 逐行读取文件

package main

import (
"bufio"
"flag"
"fmt"
"log"
"os"
) func main() {
fptr := flag.String("fpath", "test.txt", "the file path to read from")
flag.Parse() f, err := os.Open(*fptr)
if err != nil {
log.Fatal(err)
}
defer func() {
if err = f.Close(); err != nil {
log.Fatal(err)
}
}()
s := bufio.NewScanner(f)
for s.Scan() {
fmt.Println(s.Text())
}
err = s.Err()
if err != nil {
log.Fatal(err)
}
}

  

二、文件写入

1. 将字符串写入文件

package main

import (
"fmt"
"log"
"os"
) func main() {
f, err := os.Create("test2.txt")
if err != nil {
log.Fatal(err)
}
defer func() {
if err = f.Close(); err != nil {
log.Fatal(err)
}
}()
l, err := f.WriteString("Hello world")
if err != nil {
log.Fatal(err)
}
fmt.Println(l, " bytes written successfully!")
}

  

2. 将字节写入文件

package main

import (
"fmt"
"log"
"os"
) func main() {
f, err := os.Create("test2.txt")
if err != nil {
log.Fatal(err)
}
defer func() {
if err = f.Close(); err != nil {
log.Fatal(err)
}
}()
d := []byte{104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100}
l, err := f.Write(d)
if err != nil {
log.Fatal(err)
}
fmt.Println(l, " bytes written successfully!")
}

  

3. 追加到文件

package main

import (
"fmt"
"log"
"os"
) func main() {
f, err := os.OpenFile("test3.txt", os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer func() {
if err = f.Close(); err != nil {
log.Fatal(err)
}
}()
_, err = fmt.Fprintln(f, "Hello, my name is jet.")
if err != nil {
log.Fatal(err)
}
}

  

最新文章

  1. Thrift-0.9.2编译安装
  2. VC++ 对话框程序响应键盘消息的处理方法的说明(非常重要)
  3. [UCSD白板题] Maximize the Value of an Arithmetic Expression
  4. ActiveMQ(5.10.0) - Spring Support
  5. Bootstarp--全局CSS样式之表格
  6. 变更到Android4.4的问题
  7. 解决vim不能使用方向键和退格键问题
  8. Oracle数据库操作常见异常总结
  9. 关于phonegap
  10. Very Deep Convolutional Networks for Large-Scale Image Recognition
  11. 【记录】iOS10 点击推送栏的问题
  12. vue静态文件处理
  13. Overture小课堂之如何演绎钢琴滑音
  14. 谷歌浏览器内核Cef js代码整理(二) 滚动条
  15. [UnityAPI]SerializedObject类 & SerializedProperty类
  16. [20180316]为什么不使用INDEX FULL SCAN (MIN/MAX).txt
  17. js基础-运算符
  18. Winform开发框架之简易工作流设计(转自 伍华聪博客)
  19. ArcEngine中COM对象与其基础RCW分开后就不能再使用
  20. September 07th 2017 Week 36th Thursday

热门文章

  1. 2018-2-13-WPF-延迟加载
  2. ssh 操作 esxi 基本命令
  3. DFSORT
  4. 【LeetCode】树(共94题)
  5. AGC016题解
  6. 数据库与缓存:2.Redis数据库的基本知识
  7. python tkinter开始
  8. 终极解决方案: Invalid character found in the request target.
  9. 一分钟小知识:scroll-behavior 让你的页面导航滚动更丝滑~
  10. spring-boot和redis的缓存使用