mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-19 03:50:11 +08:00
modified: 18.1.md
new file: 18.10.md new file: 18.11.md new file: 18.2.md new file: 18.3.md new file: 18.4.md modified: 18.5.md new file: 18.6.md new file: 18.7.md new file: 18.8.md new file: 18.9.md modified: directory.md
This commit is contained in:
52
eBook/18.7.md
Normal file
52
eBook/18.7.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 18.7 文件
|
||||
|
||||
(1)如何打开一个文件并读取:
|
||||
|
||||
```go
|
||||
file, err := os.Open("input.dat")
|
||||
if err != nil {
|
||||
fmt.Printf("An error occurred on opening the inputfile\n" +
|
||||
"Does the file exist?\n" +
|
||||
"Have you got acces to it?\n")
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
iReader := bufio.NewReader(file)
|
||||
for {
|
||||
str, err := iReader.ReadString('\n')
|
||||
if err != nil {
|
||||
return // error or EOF
|
||||
}
|
||||
fmt.Printf("The input was: %s", str)
|
||||
}
|
||||
```
|
||||
|
||||
(2)如何通过切片读写文件:
|
||||
|
||||
```go
|
||||
func cat(f *file.File) {
|
||||
const NBUF = 512
|
||||
var buf [NBUF]byte
|
||||
for {
|
||||
switch nr, er := f.Read(buf[:]); true {
|
||||
case nr < 0:
|
||||
fmt.Fprintf(os.Stderr, "cat: error reading from %s: %s\n",
|
||||
f.String(), er.String())
|
||||
os.Exit(1)
|
||||
case nr == 0: // EOF
|
||||
return
|
||||
case nr > 0:
|
||||
if nw, ew := file.Stdout.Write(buf[0:nr]); nw != nr {
|
||||
fmt.Fprintf(os.Stderr, "cat: error writing from %s: %s\n",
|
||||
f.String(), ew.String())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 链接
|
||||
|
||||
- [目录](directory.md)
|
||||
- 上一章:[运算符模板和接口](17.4.md)
|
||||
- 下一节:[字符串](18.1.md)
|
Reference in New Issue
Block a user