SherlockGy's Blog

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

Go操作文件IO读与写

发表于 2019-09-03 | 更新于 2020-04-28 | 分类于 程序人生 > Golang
本文字数: 2.8k | 阅读时长 ≈ 3 分钟

预备

关于文件操作模式和文件权限的说明:

模式 含义
os.O_WRONLY 只写
os.O_CREATE 创建文件
os.O_RDONLY 只读
os.O_RDWR 读写
os.O_TRUNC 清空
os.O_APPEND 追加

权限:

三个数字分别代表创建者、用户组、其他人对该文件的权限。注意,需要0开头,如:0777

4 2 1
读(r) 写(w) 可执行(x)

直接读文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package main

import (
"fmt"
"io"
"os"
)

func main() {
file, e := os.Open("./main.go")
if e != nil {
fmt.Println("打开文件失败")
return
}
defer file.Close()

var cache = [128]byte{}
for {
n, e := file.Read(cache[:])
if e == io.EOF {
return
}

if e != nil {
fmt.Printf("读文件失败,%T \n", e)
return
}
fmt.Printf(string(cache[:n]))
}
}

缓存读文件(可按行读)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package main

import (
"bufio"
"fmt"
"io"
"os"
)

func main() {
file, e := os.Open("./main.go")
if e != nil {
fmt.Println("打开文件失败")
return
}

defer file.Close()
reader := bufio.NewReader(file)

for {
s, e := reader.ReadString('\n’) // 此处可使用ReadLine()
if e == io.EOF {
return
}

if e != nil {
fmt.Printf("读文件失败,%T \n", e)
return
}
fmt.Printf(s)
}
}
阅读全文 »

RustTheBook学习笔记04——分支语句

发表于 2019-07-07 | 分类于 程序人生 > Rust
本文字数: 1.1k | 阅读时长 ≈ 1 分钟
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// 分支语句

fn main() {
let x = 6;

// if是表达式,所以可以用来赋值
let result: String = if x > 5 {
"x > 5".to_string()
} else {
"x < 5".to_string()
};
println!("{}", result);

println!();

let mut count = 5;
// break可以用来返回结果
let count = loop {
count += 1;
if count == 10 {
break count;
}
};
println!("{}", count);

println!();

// while循环
// while循环可以替代掉很多loop、if-else、break循环的组合嵌套
let arr1 = [1, 2, 3, 4, 5];
let mut index = 0;
while index < 5 {
println!("{}", arr1[index]);
index += 1;
}

println!();

// for循环
// while循环很容易索引越界,for循环更加简单、安全
for elem in arr1.iter() {
println!("{}", elem);
}

println!();

// for循环实现倒计时,输出3 2 1
for number in (1..4).rev() {
println!("{}", number);
}
}
阅读全文 »

RustTheBook学习笔记03——函数

发表于 2019-07-07 | 分类于 程序人生 > Rust
本文字数: 403 | 阅读时长 ≈ 1 分钟
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 函数

fn main() {
let result = another_function(1, 2);
println!("{}", result);
}

// 注意语句和表达式的区别:
// 语句:没有返回值,比如变量的声明,在Rust中必须以分号结尾
// 表达式:有返回值,在Rust中表达式的结尾没有分号
// 如果在表达式的结尾加上分号,它就变成了语句
fn another_function(x: i32, y: i32) -> i32 {
// return x + y;
x + y
}
阅读全文 »

RustTheBook学习笔记02——变量与可变性

发表于 2019-07-07 | 分类于 程序人生 > Rust
本文字数: 752 | 阅读时长 ≈ 1 分钟
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fn main() {
// 声明变量,默认不可变
let x = 5;
println!("the value of x is {}", x);

// 声明一个可变的变量
let mut y = 5;
y = 6;
println!("the value of y is {}", y);

// 声明一个常量
// 必须 注明值的类型
const MAX_POINTS:i32 = 100_000;

// 隐藏
let z = 10;
let z = z + 1;
let z = z + 1;
println!("the value of z is {}", z);
}
阅读全文 »

RustTheBook学习笔记01——HelloWorld&猜数字游戏Demo

发表于 2019-07-07 | 分类于 程序人生 > Rust
本文字数: 1.1k | 阅读时长 ≈ 1 分钟

HelloWorld

1
2
3
fn main() {
println!("hello world!");
}

猜数字游戏Demo

阅读全文 »
1…456…23
SherlockGy

SherlockGy

Keep thinking different...

111 日志
38 分类
62 标签
RSS
GitHub E-Mail
友情链接
  • GoLang-飞雪无情的博客
  • Java-酷壳
  • Python-静觅丨崔庆才的个人博客
  • 掘金
  • GoLang中国
  • GoLang中文社区
  • V2EX
  • Microsoft Docs
  • Go语言圣经
© 2020 SherlockGy | 191k | 2:false
由 Hexo 强力驱动 v3.7.1
|
主题 — NexT.Pisces v6.3.0