-
Notifications
You must be signed in to change notification settings - Fork 1
/
2、相关包.txt
executable file
·157 lines (106 loc) · 4.41 KB
/
2、相关包.txt
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
1、bufio包
作用:主要用于IO操作,可以大幅度提高文件读写的效率
通过缓冲(分配一块内存)来提高效率,读写都先在缓冲区中,最后再读写文件;
缓冲区的设计主要是为了存储多次的写入
Reader对象
bufio.Reader是bufio对io.Reader的封装
type Reader struct {
buf []byte
rd io.Reader // reader provided by the client
r, w int // buf read and write positions
err error
lastByte int // last byte read for UnreadByte; -1 means invalid
lastRuneSize int // size of last rune read for UnreadRune; -1 means invalid
}
bufio.read(p []byte)相当于读取大小len(p)的内容
//有两个方法获取reader对象
func NewReader(rd io.Reader) *Reader
func NewReaderSize(rd io.Reader, size int) *Reader
Writer对象
bufio.Writer是bufio对io.Writer的封装
type Writer struct {
err error
buf []byte
n int
wr io.Writer
}
bufio.write(p []type)
//获取writer对象
func NewWriter(w io.Writer) *Writer
func NewWriterSize(w io.Writer, size int) *Writer
2、OS包,大多都是和操作系统相关的
file类是在OS包中,封装了底层的文件描述符和相关信息,同时封装了Read和Write的实现
1>获取文件相关信息
type FileInfo interface {
Name() string // 文件的名字(不含扩展名)
Size() int64 // 普通文件返回值表示其大小;其他文件的返回值含义各系统不同
Mode() FileMode // 文件的模式位
ModTime() time.Time // 文件的修改时间
IsDir() bool // 等价于Mode().IsDir()
Sys() interface{} // 底层数据来源(可以返回nil)
}
//获取文件info对象
func Stat(name string) (fi FileInfo, err error)
func Lstat(name string) (fi FileInfo, err error)
2>创建、删除文件夹
3>创建、删除文件
4>打开文件
os.open()//只读的
os.openfile()//参数加上可写的
5>复制
os.copy()
3、I/O包
读写操作(流操作)、数据通信的通道
//读接口
type Reader interface {
Read(p []byte) (n int, err error)
}
//写接口
type Writer interface {
Write(p []byte) (n int, err error)
}
os包实现了这两个接口;所以也有这两个接口的具体实现方法read()、write()
1>步骤
打开文件
file := os.open()
读写操作
file.read()、file.write()
关闭
file.close()
注:
在所有需要io.Reader的地方,【可以传递实现了Read()方法的实例】
自定义方法
//ReadFrom 函数将 io.Reader 作为参数,也就是说,ReadFrom 可以从任意的地方读取数据,
只要来源实现了 io.Reader 接口。比如,我们可以从标准输入、文件、字符串等读取数据
func ReadFrom(reader io.Reader, num int) ([]byte, error) {
p := make([]byte, num)
n, err := reader.Read(p)
if n > 0 {
return p[:n], nil
}
return p, err
}
//从标准输入读取
data, err = ReadFrom(os.Stdin, 11)
//从普通文件读取,其中file是os.file的实例 [func (f *File) Read(b []byte) (n int, err error) {}]
data, err = ReadForm(file, 9)
//从字符串读取
date, err = ReadFrom(strings.NewReader("from string"), 12)
4、ioutil包
是IO包的工具包,便于IO操作的
func NopCloser(r io.Reader) io.ReadCloser
func ReadAll(r io.Reader) ([]byte, error)
func ReadFile(filename string) ([]byte, error)
func WriteFile(filename string, data []byte, perm os.FileMode) error
func ReadDir(dirname string) ([]os.FileInfo, error)
func TempDir(dir, prefix string) (name string, err error)
func TempFile(dir, prefix string) (f *os.File, err error)
注:只要实现了io.Reader这个接口的方法,都可以调用
例如
s2 = "内容"
r1 := strings.newReader(s2)
data, err := ioutil.ReadAll(r1)
5、runtime包
untime包提供和go运行时环境的互操作
相当于java的虚拟机
6、time包